单元测试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的,如果代码 ...
随机推荐
- git回退到历史版本
问题描述 在开发的过程中,想要修改一个参数的命名.然后修改各种地方,并且push上码云的远程仓库.然后突然发现还要改很多地方,突然后悔不想改动了.那该怎么办呢? 处理步骤 回退本地的git版本 将本地 ...
- 前端知识体系:JavaScript基础-原型和原型链-理解原型设计模式以及 JavaScript中的原型规则
理解原型设计模式以及 JavaScript中的原型规则(原文地址) 1.原型对象:我们创建的每一个函数(JavaScript中函数也是一个对象)都有一个原型属性 prototype,原型属性实质上是一 ...
- json.loads 报错 json.decoder.JSONDecodeError
json.loads报json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes 出现这个错误其实只 ...
- C# Transaction 事务处理 -依赖事务
在DependentTransaction()方法中,实例化CommittableTransaction类,创建一个根事务,显示事务的信息.接着, tx.DependentClone()方法创建一个依 ...
- Java SE练习 - 对dom4j解析、反射的综合练习
原 Java SE练习 - 对dom4j解析.反射的综合练习 2017年12月13日 14:41:07 都说名字长不会被发现 阅读数 138 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa ...
- qt install (1)
直接在命令行安装 sudo apt-get install qt5-default qtcreator 命令行安装的卸载 sudo apt-get remove qt5-default qtcreat ...
- pat 甲级 1034 ( Head of a Gang )
1034 Head of a Gang (30 分) One way that the police finds the head of a gang is to check people's pho ...
- [Luogu] 计算系数
https://www.luogu.org/problemnew/show/P1313#sub Answer = a ^ n * b ^ m * C(k, min(n, m)) 这里用费马小定理求逆 ...
- 初学node node开发环境搭建 node模块化 commonJS原理
由于Node.js平台是在后端运行JavaScript代码,所以,必须首先在本机安装Node环境. 学习node,首先要装node,和它的包管理工具,这两个都是傻瓜式安装,百度一下就安装了. 安装完之 ...
- [linux]kali apt-get 安装mysql
环境: Linux kali 4.18.0-kali2-amd64 #1 SMP Debian 4.18.10-2kali1 (2018-10-09) x86_64 GNU/Linux 本来是想要装m ...