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中replace方法实例分析
Aug 20 Python
Python基于PycURL实现POST的方法
Jul 25 Python
网站渗透常用Python小脚本查询同ip网站
May 08 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
python使用selenium实现批量文件下载
Mar 11 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
Python中print函数简单使用总结
Aug 05 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
Pycharm安装第三方库失败解决方案
Nov 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下实现折线图效果的代码
2007/04/28 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
JS改变页面颜色源码分享
2018/02/24 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
python解析json实例方法
2013/11/19 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Pycharm小白级简单使用教程
2020/01/08 Python
python -v 报错问题的解决方法
2020/09/15 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
高三语文教学反思
2014/01/15 职场文书
建筑安全标语
2014/06/07 职场文书
单位租车协议书
2015/01/29 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
跑出一片天观后感
2015/06/08 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript