XtestRunner一个比较好用好看的生成测试报告的工具
XtestRunner
XtestRunner 是一款基于 Python 的测试报告生成工具,专为 unittest 和 pytest 框架设计,支持生成美观、详细的 HTML 测试报告,同时具备日志记录、截图嵌入、失败重跑等实用功能。以下是关于如何使用 XtestRunner 生成测试报告的详细指南:
一、XtestRunner 安装
首先需要通过 pip 安装 XtestRunner:
pip install XtestRunner |
二、核心功能与优势
- 美观的 HTML 报告:支持自定义标题、描述、LOGO,报告包含用例统计、详细日志、截图等信息。
- 多框架支持:兼容 unittest 和 pytest 测试框架。
- 截图嵌入:失败用例可自动嵌入截图(需手动调用截图方法)。
- 日志集成:自动记录测试过程中的日志,便于问题定位。
- 失败重跑:支持失败用例重跑,提高报告准确性。
- 邮件发送:可将生成的报告通过邮件发送给指定接收人。
三、使用方法(分框架示例)
1. 基于 unittest 框架
步骤如下:
- 编写 unittest 测试用例;
- 使用 XtestRunner 的 HTMLTestRunner 作为测试运行器;
- 运行用例并生成报告。
示例代码:
import unittest from XtestRunner import HTMLTestRunner class TestDemo(unittest.TestCase): """测试用例示例""" def test_success(self): """成功的用例""" self.assertEqual(1 + 1, 2)
def test_failure(self): """失败的用例""" self.assertEqual(1 + 1, 3)
def test_error(self): """出错的用例""" raise ValueError("自定义错误") if __name__ == '__main__': # 加载用例 suite = unittest.TestLoader().loadTestsFromTestCase(TestDemo)
# 生成报告 with open('report.html', 'wb') as f: runner = HTMLTestRunner( stream=f, title="测试报告标题", description="报告描述:这是一个示例报告", tester="测试人员姓名" ) runner.run(suite) |
2. 基于 pytest 框架
需结合 pytest 的插件机制,通过 pytest.main() 调用 XtestRunner 生成报告。
示例代码:
import pytest from XtestRunner import pytest_runner def test_success(): """成功的用例""" assert 1 + 1 == 2 def test_failure(): """失败的用例""" assert 1 + 1 == 3 def test_error(): """出错的用例""" raise ValueError("自定义错误") if __name__ == '__main__': pytest.main([ __file__, '-s', '-v', # 显示详细日志 '--runner=HTMLTestRunner', # 指定运行器 '--title=Pytest测试报告', '--description=使用pytest框架生成的报告', '--tester=测试员', '--report=report_pytest.html' # 报告路径 ]) |
四、高级功能配置
1. 嵌入截图(失败用例)
在 Web 自动化测试中,可在断言失败时截图并嵌入报告,需配合 save_screenshot() 方法:
from XtestRunner import HTMLTestRunner import unittest from selenium import webdriver # 以Selenium为例 class TestWeb(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome()
def test_screenshot(self): self.driver.get("https://www.baidu.com") try: self.assertEqual(self.driver.title, "错误标题") # 故意失败 except AssertionError: # 截图并嵌入报告 self.driver.save_screenshot("screenshot.png") self.addFailureScreenshot("screenshot.png") # 关键方法 raise # 抛出异常,确保用例标记为失败
def tearDown(self): self.driver.quit() if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(TestWeb) with open('web_report.html', 'wb') as f: HTMLTestRunner(stream=f, title="Web测试报告").run(suite) |
2. 失败重跑
通过 rerun 参数配置失败重跑次数(仅支持 pytest):
pytest.main([ __file__, '--runner=HTMLTestRunner', '--report=report_rerun.html', '--rerun=2' # 失败重跑2次 ]) |
3. 发送邮件报告
生成报告后,可通过 Email 类发送邮件:
from XtestRunner import Email # 配置邮件 email = Email( smtp_server="smtp.qq.com", # 邮件服务器(如QQ邮箱为smtp.qq.com) smtp_port=465, # 端口(SSL加密通常为465) smtp_user="your_email@qq.com", # 发件人邮箱 smtp_password="your_auth_code", # 授权码(非密码) receiver=["recipient@example.com"], # 收件人列表 title="测试报告邮件", # 邮件标题 content="请查收测试报告", # 邮件内容 file_path="report.html" # 附件(报告路径) ) email.send() # 发送邮件 |
五、报告解读
生成的 HTML 报告包含以下核心部分:
- 概览:用例总数、通过 / 失败 / 错误数、通过率、测试时长。
- 详细结果:每个用例的状态、运行时间、日志(失败用例显示错误堆栈)。
- 截图区:失败用例的截图(如有配置)。
- 环境信息:Python 版本、测试框架版本等。
通过以上配置,XtestRunner 可快速生成清晰、专业的测试报告,助力测试结果的分析与展示。更多细节可参考 XtestRunner 官方文档。