当前位置:网站首页>unittest自动化测试框架总结
unittest自动化测试框架总结
2022-08-02 19:34:00 【Forestᝰ】
一、简介
python自带的单元测试框架,可用于做单元测试,功能丰富,无需安装。
二、优点
1. 能够组织多个用例去执行
2. 提供丰富的断言方法
3. 能够生成测试报告
三、unittest的组成
TestCase 创建我们的测试用例
TestSuite 将我的多个测试用例组合成一个测试集合
TextTestRunner 执行测试集合
TestLoader 执行一个目录下的所有测试用例文件
Fixture 测试夹具
四、实现步骤
1、导包
2、定义测试类:管理测试用例
3、定义方法:即测试用例
4、执行测试用例
五、测试集合和执行方式
测试集合
mian 文件级别的所有测试用例 - 手工的
TestSuite 类级别、方法级别的测试用例 - 手工的
TestLoader 文件级别的所有测试用例 - 自动的
执行方式
TestCase + Pycharm
TestCase + unittest.main()
TestCase + TestSuite + TextTestRunner **** 使用频率最高
TestCase + TestLoader + TextTestRunner
六、代码示例
import unittest
class TestFunc1(unittest.TestCase):
# 定义测试用例方法 -- 实例方法
def test_add1(self):
print('测试模块1功能')
def test_add2(self):
print('测试模块2功能')
class TestFunc2(unittest.TestCase):
# 定义测试用例方法 -- 实例方法
def test_add3(self):
print('测试模块3功能')
def test_add4(self):
print('测试模块4功能')
# 使用main方法来执行调用(基于unittest自带的执行方式)
if __name__ == '__main__':
# 1 创建测试集合
suite = unittest.TestSuite()
# 2 添加测试用例到集合
# 方法1:指定测试用例方法, suite.addTest(测试类(“测试用例方法”))
# suite.addTest(TestFunc('test_add1'))
suite.addTest(TestFunc1('test_add2'))
# 方法2:指定类, suite.addTest(unittest.makeSuite(测试类名))
suite.addTest(unittest.makeSuite(TestFunc2))
# 3 TextTestRuner执行
# 3-1 实例化(创建)执行套件
runner = unittest.TextTestRunner()
# 3-2 执行测试集合
runner.run(suite)
七、测试报告
1、unittest自带的测试报告
导出格式选择HTML可在浏览器中打开查看
第三方测试报告
说明:第三方测试报告需拿到模板文件,且是通过TestLoader测试集的方式来批量执行模板用例文件的,原理是open打开模板文件,测试结果以数据流的形成传到文件中,再创建一个新的报告文件,语法格式如下:
import unittest
# 导入第三方法测试报告的模块包
from Commonlib.HTMLTestRunner_cn import HTMLTestRunner
# 1 将需执行的测试目录及文件添加到测试集
# my_suite = unittest.TestLoader().discover('my_unittest0727', pattern='test*.py')
my_suite = unittest.defaultTestLoader.discover('my_unittest0727', pattern='test*.py')
# 2 打开报告文件,因有大量数据包含图表信息,所以使用‘wb’二进制方式写入
with open('./reports/07301617进阶report.html','wb') as file_data:
runner = HTMLTestRunner(file_data, # 测试数据存储的变量
title='xxxxxx平台测试报告', # 测试报告名称(网页标头)
verbosity=2, # 输出等级
description='这是一些描述信息:xxxxxxxx') # 定制的描述信息
runner.run(my_suite)
第三方测试报告可自定义一些参数输出,如输出级别、报告标题、描述信息等。
边栏推荐
- AI Scientist: Automatically discover hidden state variables of physical systems
- 扫码预约 | 观看Apache Linkis数据处理实践以及计算治理能力
- idea 配置resin
- NC | 土壤微生物组的结构和功能揭示全球湿地N2O释放
- 你想要的宏基因组-微生物组知识全在这(2022.8)
- spack install报错/tmp/ccBDQNaB.s: Assembler message:
- 【学习日记】win64配置openni的vs2022编译环境
- golang刷leetcode 经典(9)为运算表达式设计优先级
- es DELETE index 源码分析
- 2022-08-01
猜你喜欢
扫码预约 | 观看Apache Linkis数据处理实践以及计算治理能力
基于OpenGL的冰川与火鸟(光照计算模型、视景体、粒子系统)
日志框架学习
Parse common methods in the Collection interface that are overridden by subclasses
当TIME_WAIT状态的TCP正常挥手,收到SYN后…
Kali命令ifconfig报错command not found
PG's SQL execution plan
Nature Microbiology综述:聚焦藻际--浮游植物和细菌互作的生态界面
LeetCode:622. 设计循环队列【模拟循环队列】
Based on OpenGL glaciers and firebird (illumination calculation model, visual, particle system)
随机推荐
如何ES源码中添加一个自己的API 流程梳理
ShapeableImageView 的使用,告别shape、三方库
MySQL安装(详细,适合小白)
日志框架学习
Parse the commonly used methods in the List interface that are overridden by subclasses
SQL 嵌套 N 层太长太难写怎么办?
J9 digital theory: the Internet across chain bridge has what effect?
golang刷leetcode 经典(9)为运算表达式设计优先级
E - Addition and Multiplication 2(贪心)
Lvm逻辑卷
ShardingSphere-proxy +PostgreSQL implements read-write separation (static strategy)
Leetcode刷题——23. 合并K个升序链表
PG's SQL execution plan
入职对接-hm项目
openlayers版本更新差别
腾讯云孟凡杰:我所经历的云原生降本增效最佳实践案例
2022-07-27
快速掌握jmeter(一)——实现自动登录与动态变量
golang刷leetcode 经典(12) 完全二叉树插入器
十六进制文本的字节序问题