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不带重复的全排列代码
Aug 13 Python
python中列表元素连接方法join用法实例
Apr 07 Python
Python实现包含min函数的栈
Apr 29 Python
利用Python实现Windows定时关机功能
Mar 21 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
python实现机器学习之元线性回归
Sep 06 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
python构造IP报文实例
May 05 Python
python3.8.1+selenium实现登录滑块验证功能
May 22 Python
Python scrapy爬取小说代码案例详解
Jul 09 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
P/Invoke是什么
2015/07/31 面试题
应届生服装设计自我评价
2013/09/20 职场文书
标准毕业生自荐信范文
2013/11/04 职场文书
精彩的英文自荐信
2014/01/30 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
颁奖典礼主持词
2014/03/25 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
建筑安全标语
2014/06/07 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书