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的id()函数解密过程
Dec 25 Python
python中的变量如何开辟内存
Jun 26 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
python自动发微信监控报警
Sep 06 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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中对用户身份认证实现两种方法
2011/06/04 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
用Python实现一个简单的线程池
2015/04/07 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
python实现ID3决策树算法
2017/12/20 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
2014年科室工作总结
2014/11/20 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
2015年采购部工作总结
2015/04/23 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
Python Parser的用法
2021/05/12 Python
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
Python中三种花式打印的示例详解
2022/03/19 Python
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android