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


边栏推荐
猜你喜欢
随机推荐
MySQL安装配置教程(超级详细、保姆级)
线性表(顺序表和链表)
Gradle系列——Gradle的build.gradle文件详情,项目发布(基于Gradle文档7.5)day3-3
Lvm逻辑卷
简单有效又有用的关闭antimalware service executable的方法·备份记录
如何ES源码中添加一个自己的API 流程梳理
健康报告-设计与实现
J9数字货币论:识别Web3新的稀缺性:开源开发者
golang刷leetcode动态规划(12)最小路径和
分布式事务
openlayers版本更新差别
Cannot find declaration to go to
光源控制器接口定义说明
日志框架学习
译出我精彩 | 7月墨力翻译计划获奖名单公布
入职对接-hm项目
Mysql安装流程 【压缩版】
元宇宙001 | 情绪无法自控?元宇宙助你一臂之力
TPAMI2022 | TransCL:基于Transformer的压缩学习,更灵活更强大
栈、队列和数组
![[AnXun cup 2019] easy_web](/img/26/c04bc8b9c65ac75ddd2696b48e1661.png)








