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读取注册表中值的方法
Apr 08 Python
python设置检查点简单实现代码
Jul 01 Python
wxpython实现图书管理系统
Mar 12 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
Python提取频域特征知识点浅析
Mar 04 Python
python实现QQ空间自动点赞功能
Apr 09 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
基于python实现matlab filter函数过程详解
Jun 08 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的几个常用数字判断函数代码
2012/04/24 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
实例浅析js的this
2016/12/11 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
Python使用剪切板的方法
2017/06/06 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
幼儿园运动会加油词
2014/02/14 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
实验室标语
2014/06/21 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
新员工入职欢迎词
2015/01/23 职场文书
教代会开幕词
2015/01/28 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
技术入股协议书
2016/03/22 职场文书
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server