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教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
python中的计时器timeit的使用方法
Oct 20 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
处理python中多线程与多进程中的数据共享问题
Jul 28 Python
详解python中index()、find()方法
Aug 29 Python
Python-jenkins 获取job构建信息方式
May 12 Python
记一次Django响应超慢的解决过程
Sep 17 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
Python中的流程控制详解
Feb 18 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/07/17 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
使用PHP开发留言板功能
2019/11/19 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python对html过滤处理的方法
2018/10/21 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
python实现程序重启和系统重启方式
2020/04/16 Python
python 等差数列末项计算方式
2020/05/03 Python
Python 绘制可视化折线图
2020/07/22 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
专业实习自我鉴定
2013/10/29 职场文书
审核会计岗位职责
2013/11/08 职场文书
检察官就职演讲稿
2014/01/13 职场文书
对公司合理化的建议书
2014/03/12 职场文书
大学生自我鉴定书
2014/03/24 职场文书
捐助倡议书范文
2014/04/15 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
运动会开幕式主持词
2015/07/01 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏