Python 自动化测试框架:基于 Unittest 与 Excel 的数据驱动及可视化报告生成
引言
在自动化测试实践中,构建一个能够自动生成精美可视化报告的测试框架至关重要。本文介绍如何运用 Python 的 Unittest、数据驱动测试(DDT)、Excel、Jinja2 和 HTML 技术,构建一个能够自动生成精美可视化测试报告的自动化测试框架。该框架旨在减少重复代码,提高用例维护效率,并实现测试结果的即时通知。
核心思路流程
- 数据驱动:封装读取数据功能,所有测试数据均填写在 Excel 中,逻辑代码不再硬编码。
- 用例执行:通过 unittest 框架的
discover()方法找到匹配的测试用例,由自定义 Runner 执行并生成报告。 - 结果集成:集成 TestResult,获取执行数据,结合 Jinja2 模板引擎生成 HTML 报告。
- 消息通知:将报告路径及结果参数传递给邮件、钉钉或企业微信通知接口,用例结束后自动发送。
1. 数据驱动测试(DDT)实现
为了匹配框架使用,我们重新编写了类似 DDT 的装饰器,结合用例名称生成测试函数名称,从而兼容 unittest 的框架特性。核心代码如下:
import yaml
def list_data(datas):
"""
:param datas: Test data
:return:
"""
def wrapper(func):
setattr(func, "PARAMS", datas)
return func
return wrapper
def yaml_data(file_path):
"""
:param file_path: YAML file path
:return:
"""
def wrapper(func):
try:
with open(file_path, "r", encoding="utf-8") as f:
datas = yaml.load(f, Loader=yaml.FullLoader)
except:
with open(file_path, "r", encoding="gbk") as f:
datas = yaml.load(f, Loader=yaml.FullLoader)
(func, , datas)
func
wrapper


