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 22 Python
python根据出生年份简单计算生肖的方法
Mar 27 Python
python读取二进制mnist实例详解
May 31 Python
Python 实现12306登录功能实例代码
Feb 09 Python
Python实现检测文件MD5值的方法示例
Apr 11 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
python使用tornado实现登录和登出
Jul 28 Python
python元组的概念知识点
Nov 19 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
python Tensor和Array对比分析
Jan 08 Python
Tensorflow 实现释放内存
Feb 03 Python
python如何用matplotlib创建三维图表
Jan 26 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/07/05 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
鼠标图片振动代码
2006/07/06 Javascript
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
Linux常见面试题
2016/10/04 面试题
工商管理实习自我鉴定
2013/09/28 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
项目考察欢迎辞
2014/01/17 职场文书
班级旅游计划书
2014/05/03 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
经理岗位职责
2015/02/02 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis