单元测试unittest及报告生成(两种报告模板)
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。
在说unittest之前,先说几个概念:
TestCase 也就是测试用例
TestSuite 多个测试用例集合在一起,就是TestSuite
TestLoader是用来加载TestCase到TestSuite中的
TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息
1.单元测试:
开发自己测自己写的代码;
2.导入模块unittest:
import unittest #导入unittest模块
import HTMLTestRunner #导入HTMLTestRunner 报告模板模块
from BeautifulReport import BeautifulReport #导入BeautifulReport 报告模板模块
3.运行一个简单的unittest:
import unittest #单元测试模块 class TestCalc(unittest.TestCase):
def test1(self): #函数名要以test开头,否则不会被执行
self.assertEqual(1,1) def test2(self):
self.assertEqual(1,2) unittest.main() #会运行当前python文件里面的所有测试用例
4.unittest单元测试的基本流程:
用例集/测试套件:存放测试用例的
①.先把所有的测试用例都放到用例集
②.运行这些测试用例
③.产生报告
代码:
一.生成报告模板HTMLTestRunner模块(比较丑且相对不好用)
注:1.安装并导入HTMLTestRunner 模块,该模块是可以生成报告的模块。
2.运行代码时,要以Run xx.py方式运行,不能以unittest方式运行,否则不会生成报告。
import unittest #单元测试模块
import HTMLTestRunner #用来生成报告的模块 class TestCalc(unittest.TestCase):
def testcc(self): #函数名要以test开头,否则不会被执行
'''这是第一个测试用例''' #用例描述,在函数下,用三个单引号里面写用例描述
self.assertEqual(1,1)
print('第一个用例') def testaa(self):
'''这个是第二个测试用例'''
self.assertEqual(1,2)
print('第二个用例') def testdd(self):
'''用例描述3'''
print('第三个用例') def testbb(self):
'''用例描述4'''
print('第四个用例') suite = unittest.TestSuite() #定义一个测试集合
suite.addTest(unittest.makeSuite(TestCalc)) #把写的用例加进来(将TestCalc类)加进来
f = open('test.html','wb') #以二进制模式打开一个文件
runner = HTMLTestRunner.HTMLTestRunner(f,title='unittest用例标题',description='这是用例描述')
runner.run(suite) #运行用例(用例集合)
在浏览器打开生成的test.html文件,HTMLTestRunner报告如图:
5.setup()/teardown()与setUpClass/tearDownClass。如图:
import unittest #单元测试模块
import HTMLTestRunner #用来生成报告的模块 class TestCalc(unittest.TestCase):
def setUp(self): #每个用例运行之前运行的
print('setup是啥时候运行的') def tearDown(self): #每个用例运行之后运行的
print('teardown是啥时候运行的') @classmethod
def setUpClass(cls): #在所有用例执行之前运行的
print('我是setUpclass,我位于所有用例的开始') @classmethod
def tearDownClass(cls): #在所有用例都执行完之后运行的
print('我是tearDownClass,我位于多有用例运行的结束') def testcc(self): #函数名要以test开头,否则不会被执行
'''这是第一个测试用例''' #用例描述,在函数下,用三个单引号里面写用例描述
self.assertEqual(1,1)
print('第一个用例') def testaa(self):
'''这个是第二个测试用例'''
self.assertEqual(1,1)
print('第二个用例') def testdd(self):
'''用例描述3'''
print('第三个用例') def testbb(self):
'''用例描述4'''
print('第四个用例') unittest.main() #会运行当前python文件里面的所有测试用例
运行结果:
二.报告模板BeautifulReport(模板相对好用)
代码:
import unittest #单元测试模块
from BeautifulReport import BeautifulReport as bf #导入BeautifulReport模块,这个模块也是生成报告的模块,但是比HTMLTestRunner模板好看 class TestCalc(unittest.TestCase):
def setUp(self): #每个用例运行之前运行的
print('setup是啥时候运行的') def tearDown(self): #每个用例运行之后运行的
print('teardown是啥时候运行的') @classmethod
def setUpClass(cls): #在所有用例执行之前运行的
print('我是setUpclass,我位于所有用例的开始') @classmethod
def tearDownClass(cls): #在所有用例都执行完之后运行的
print('我是tearDownClass,我位于多有用例运行的结束') def testcc(self): #函数名要以test开头,否则不会被执行
'''这是第一个测试用例''' #用例描述,在函数下,用三个单引号里面写用例描述
self.assertEqual(1,1)
print('第一个用例') def testaa(self):
'''这个是第二个测试用例'''
self.assertEqual(1,1)
print('第二个用例') def testdd(self):
'''用例描述3'''
print('第三个用例') def testbb(self):
'''用例描述4'''
print('第四个用例') suite = unittest.TestSuite() #定义一个测试集合
suite.addTest(unittest.makeSuite(TestCalc)) #把写的用例加进来(将TestCalc类)加进来
run = bf(suite) #实例化BeautifulReport模块
run.report(filename='test',description='这个描述参数是必填的')
浏览器查看生成的报告页面:
单元测试unittest及报告生成(两种报告模板)的更多相关文章
- Java使用poi生成Excel,生成两种表格下拉框
想要使用POI操作以xsl结尾的Excel,首先要下载poi相关的jar包,用到的jar有: poi-3.9.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.9.j ...
- maven执行单元测试失败后,继续生成Jacoco&Sonar报告
为保证生成单元测试覆盖 sonarqube或者jacoco与maven集成时,如果pom文件配置了sonarqube或者Jacoco的相关配置, 那么在pom文件所在目录执行mvn clean ins ...
- jemter转换报告生成html格式报告
前言: 结合上篇,因为使用Jenkins做集成,jmeter的结果肯定需要生产一个报告,如果按原本的jmt格式生成,肯定是不行的,现在就需要对报告格式进行转换 使用工具: ant:jmeter可以通过 ...
- Python 爬取 热词并进行分类数据分析-[热词关系图+报告生成]
日期:2020.02.05 博客期:144 星期三 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...
- SpringBoot单元测试的两种形式
@ 目录 前言 demo环境 springbootTest Junit 总结 前言 最近公司要求2021年所有的项目代码单元测试覆盖率要达到90%,作为刚毕业的小白来说这简直就是噩梦啊,springb ...
- unittest测试框架生成可视化测试报告-BeautifulReport
生成报告的样式: 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoader是用来加载Test ...
- android 发送短信的两种方式,以及接收报告和发送报告
android发送短信,以及接收报告和发送报告 android中发送短信其实有两种方式,这个和打电话类似,大家可以了解一下: 一.调起系统发短信功能 ...
- unittest框架之 BeautifulReport 模板报告生成的正确姿势
使用unittest框架的自动化测试,报告一定很重要,目前介绍一个比较高大上的报告模板 BeautifulReport.如果首次使用的话需要安装 pip install beautifulreport ...
- PyCharm上unittest 测试用例两种执行方式
每次讲到unittest测试框架的时候,经常有同学在群里反映,为啥我的运行不是按照我往suite里添加的用例顺序执行的,为什么别人的能跑出来报告,我的就不行... 当然,首先确认代码是OK的,如果代码 ...
随机推荐
- touchgfx MVP
- Collection 和 Collections 有什么区别?(未完成)
Collection 和 Collections 有什么区别?(未完成)
- ndk学习之C语言基础复习----基本数据类型、数组
关于NDK这个分类在N年前就已经创建了,但是一直木有系统的记录其学习过程,当然也没真正学会NDK的技术真谛,所以一直也是自己的一个遗憾,而如今对于Android程序员的要求也是越来越高,对于NDK也是 ...
- Redis长短链接的区别
本文介绍了phpredis中与redis建立连接的两种方式:connect(短连接)和pconnect(长连接)的区别. 问题背景: 项目采用LNMP架构,考虑到数据访问性能问题,因此使用redis来 ...
- GNU Radio下QT GUI Tab Widget的使用方法
期望显示出的效果: 即将要显示的图放在各自的标签页中. 整体框图: 具体设置: QT GUI Tab Widget的设置: 其中 ID改为自己想改的,这里我写的是display GUI Hint所代表 ...
- Neo4j入门博客分享
Neo4j学习参考博客:https://www.cnblogs.com/ljhdo/p/5516793.html Neo4j Cypher查询语言详解 http://www.ttlsa.com/nos ...
- P3254——DP&&入门
题目 给定一个$n \times m$的$01$矩形,选择其中为$1$的位置,要求互不相邻,问方案数. 解决方案 直接dp因为状态较多,数组很难直接表示出来,我们采用二进制状态压缩存储. 用$dp[i ...
- Qt QMutexLocker_自动解锁的机制
QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁.因为QMutexLocker 申请的这个lock变量在这个函数退出时,自动的调用析构函数来解锁.这样可以防止在程序编写的过程 ...
- curl查看http请求消息的时长
1. -X 指定请求方式GET请求curl -X GET http://www.jackyops.com/search?data=123 # -X GET是可选的 POST请求curl -X POS ...
- sqlalchemy 基本操作
表操作 models.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...