Python中Unittest框架的具体使用


Posted in Python onAugust 27, 2019

Unittest

1.环境

Unittest为Python内嵌的测试框架,不需要特殊配置,仅需要在File---settings---Tools----Python Intergrated Tools下配置框架为Unittest

2.编写规范

  • 需要导入 import unittest
  • 测试类必须继承unittest.TestCase
  • 测试方法以 test_开头
  • 模块和类名没有要求

3.Unittest介绍

import unittest

def add(x, y):
 return x + y

def sub(x,y):
 return x - y

class UnittestDemo(unittest.TestCase):

 def setUp(self):
  print("I an setup")

 def test_add(self):
  print("my first unit test demo----add")
  self.assertEqual(add(10,1),11,"assert equal")

 def test_sub(self):
  print("my first unit test demo----sub")
  self.assertEqual(sub(10, 1), 9, "assert equal2")

 @unittest.skip("i don't want to run this case.")
 def test_sub1(self):
  print("my first unit test demo----sub1")
  self.assertEqual(sub(10, 1), 9, "assert equal3")

 def tearDown(self):
  print("I an tearDown")

setUp及TearDown

方法级别的,类里面的每个方法调用一次

def setUp(self):
  print("I an setup")

setUpClass及tearDownClass

类级别的,类里面的所有方法仅执行一次

@classmethod
 def setUpClass(cls):
  print("I an setUpClass")

setUpModule,tearDownModule

模块级别的,执行模块里面类中的所有方法仅执行一次

4.Unittest使用

import unittest

from unittest_task import UnittestDemo
from HTMLTestRunner import HTMLTestRunner


suite=unittest.TestSuite()#创建用例集合
tests = [UnittestDemo("test_add"), UnittestDemo("test_sub"),UnittestDemo("test_sub1")]
suite.addTests(tests)


with open('HTMLReport.html', 'wb') as fi:
 runner = HTMLTestRunner(stream=fi,
       title = 'MathFunc Test Report',
       description='generated by HTMLTestRunner.',
       verbosity=2
       )
 runner.run(suite)

TestCase

多个测试用例集合在一起,就是TestSuite

TestSuite

多个测试用例集合在一起,就是TestSuite

TestLoader

用来加载TestCase到TestSuite中的

TestRunner

执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

skip装饰器

跳过某个用例不执行

@unittest.skip("i don't want to run this case.")

无条件跳过

unittest.skip(reason)

当condition为True时跳过

unittest.skipIf(condition, reason)

当condition为False时跳过

unittest.skipUnless(condition, reason)

self.skipTest('do not run this.')

5.Unittest生成报告

5.1 Unittest生成txt格式报告

if __name__ == '__main__':
 suite = unittest.TestSuite()
 
 tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")]
 suite.addTests(tests)
 
 with open('UnittestTextReport.txt', 'a') as f:
  runner = unittest.TextTestRunner(stream=f, verbosity=2)
  runner.run(suite)

运行该文件,就会发现目录下生成了'UnittestTextReport.txt,所有的执行报告均输出到了此文件中。

verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告

5.2 Unittest生成html格式报告

with open('HTMLReport.html', 'wb') as fi:
 runner = HTMLTestRunner(stream=fi,
       title = 'MathFunc Test Report',
       description='generated by HTMLTestRunner.',
       verbosity=2
       )
 runner.run(suite)

输出测试报告为HTML格式,unittest中htmltestrunner导出测试报告,可以修改htmltestrunner中的测试代码

其中,的python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决见:

https://3water.com/article/168573.htm

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python logging模块学习笔记
May 24 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
解决Django加载静态资源失败的问题
Jul 28 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
Python 项目转化为so文件实例
Dec 23 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
Python Serial串口基本操作(收发数据)
Nov 06 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 #Python
Python3分析处理声音数据的例子
Aug 27 #Python
python中struct模块之字节型数据的处理方法
Aug 27 #Python
Python的bit_length函数来二进制的位数方法
Aug 27 #Python
使用python将excel数据导入数据库过程详解
Aug 27 #Python
python读取指定字节长度的文本方法
Aug 27 #Python
Django中的cookie和session
Aug 27 #Python
You might like
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
如何快速上手Vuex
2017/02/14 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
详解A标签中href=""的几种用法
2017/08/20 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
python正则分组的应用
2013/11/10 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
python实现弹跳小球
2019/05/13 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
英国网上购买门:Direct Doors
2018/06/07 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
四风存在的原因分析
2014/02/11 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
MySQL 全文检索的使用示例
2021/06/07 MySQL
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android