当前位置:网站首页>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)
第三方测试报告可自定义一些参数输出,如输出级别、报告标题、描述信息等。
边栏推荐
- 银保监会:人身险产品信披材料应由保险公司总公司统一负责管理
- 松鼠短视频系统为用户加入随机头像代码-快速为用户加上随机头衔
- 【LeetCode】1161. 最大层内元素和
- openlayers version update difference
- ShardingSphere-proxy +PostgreSQL实现读写分离(静态策略)
- 汇编实例解析--利用tcb,tss,全局tss,ldt管理任务实现任务切换
- 日志框架学习
- Detailed explanation of common examples of dynamic programming
- 【Psychology · Characters】Issue 1
- 分享一个 web 应用版本监测 (更新) 的工具库
猜你喜欢
服务器Centos7 静默安装Oracle Database 12.2
PG's SQL execution plan
MySQL安装(详细,适合小白)
ShapeableImageView 的使用,告别shape、三方库
扫码预约 | 观看Apache Linkis数据处理实践以及计算治理能力
译出我精彩 | 7月墨力翻译计划获奖名单公布
SCANIA SCANIA OTL tag is introduced
In action: 10 ways to implement delayed tasks, with code!
VMware虚拟机无法上网
geoserver+mysql+openlayers问题点
随机推荐
Kali命令ifconfig报错command not found
【LeetCode】622. 设计循环队列
网络协议介绍
Leetcode刷题——23. 合并K个升序链表
golang刷leetcode 经典(13) 最小高度树
【软件工程导论】软件工程导论笔记
openlayers不常用接口介绍
Detailed explanation of common examples of dynamic programming
ALV报表学习总结
清除浮动与BFC
VMware虚拟机无法上网
MaxCompute 近期发布上线的版本的 SQL 引擎新功能参数化视图有什么优势?
Geoserver+mysql+openlayers
el-tree渲染大量数据的解决方案(不通过懒加载)
PG's SQL execution plan
MySQL安装配置教程(超级详细)
openlayers版本更新差别
ALV概念讲解
基于OpenGL的冰川与火鸟(光照计算模型、视景体、粒子系统)
动态规划常见实例详解