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标准库内置函数complex介绍
Nov 25 Python
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
python覆盖写入,追加写入的实例
Jun 26 Python
python3实现单目标粒子群算法
Nov 14 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
Python如何读写字节数据
Aug 05 Python
ASP.NET Core中的配置详解
Feb 05 Python
python 制作本地应用搜索工具
Feb 27 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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 定界符 使用技巧
2009/06/14 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
非常好的js代码
2006/06/27 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
python随机生成指定长度密码的方法
2015/04/04 Python
Python中的ctime()方法使用教程
2015/05/22 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
人事专员的职责
2014/02/26 职场文书
移交协议书
2014/08/19 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
爱的教育观后感
2015/06/17 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript