当前位置:网站首页>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)
第三方测试报告可自定义一些参数输出,如输出级别、报告标题、描述信息等。


边栏推荐
猜你喜欢

Lvm逻辑卷

牛客题目——滑动窗口的最大值、矩阵最长递增路径、顺时针旋转矩阵、接雨水问题

程序员也许都缺一个“二舅”精神

Detailed explanation of common examples of dynamic programming

You want the metagenomics - microbiome knowledge in all the (2022.8)
![[安洵杯 2019]easy_web](/img/26/c04bc8b9c65ac75ddd2696b48e1661.png)
[安洵杯 2019]easy_web
![[AnXun cup 2019] easy_web](/img/26/c04bc8b9c65ac75ddd2696b48e1661.png)
[AnXun cup 2019] easy_web

扫码预约 | 观看Apache Linkis数据处理实践以及计算治理能力

B站HR对面试者声称其核心用户都是生活中的Loser

Office2021 安装MathType
随机推荐
什么是现场服务管理系统(FSM)?有什么好处?
Leetcode刷题——字符串相加相关题目(415. 字符串相加、面试题 02.05. 链表求和、2. 两数相加)
栈、队列和数组
openlayers版本更新差别
ShapeableImageView 的使用,告别shape、三方库
B站HR对面试者声称其核心用户都是生活中的Loser
我用这一招让团队的开发效率提升了 100%!
Parse the commonly used methods in the List interface that are overridden by subclasses
Lvm逻辑卷
Metaverse 001 | Can't control your emotions?The Metaverse is here to help you
清除浮动与BFC
shell:条件语句
MaxCompute 近期发布上线的版本的 SQL 引擎新功能参数化视图有什么优势?
日志框架学习
[AnXun cup 2019] easy_web
EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
所谓武功再高也怕菜刀-分区、分库、分表和分布式的优劣
J9 digital theory: the Internet across chain bridge has what effect?
image could not be accessed on a registry to record its digest
治疗 | 如何识别和处理消极想法