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读写文件操作示例程序
Dec 02 Python
python中使用pyhook实现键盘监控的例子
Jul 18 Python
python中正则表达式的使用详解
Oct 17 Python
python多线程用法实例详解
Jan 15 Python
tensorflow训练中出现nan问题的解决
Feb 10 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
在Python中使用gRPC的方法示例
Aug 08 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
关于Python形参打包与解包小技巧分享
Aug 24 Python
python编程实现清理微信重复缓存文件
Nov 01 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
xml+php动态载入与分页
2006/10/09 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
2016/09/06 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
python 中xpath爬虫实例详解
2019/08/26 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
python 模块导入问题汇总
2021/02/01 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
24岁生日感言
2014/01/13 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
MySQL 数据丢失排查案例
2021/05/08 MySQL
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL