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语言的12个基础知识点小结
Jul 10 Python
python采集博客中上传的QQ截图文件
Jul 18 Python
Python的Django框架使用入门指引
Apr 15 Python
在centos7中分布式部署pyspider
May 03 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
对python模块中多个类的用法详解
Jan 10 Python
Django框架自定义模型管理器与元选项用法分析
Jul 22 Python
python实现横向拼接图片
Mar 23 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP new static 和 new self详解
2017/02/19 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
北京华建集团SQL面试题
2014/06/03 面试题
天地会口号
2014/06/17 职场文书
教师节感想
2015/08/11 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL