手动测试耗时耗力,尤其在迭代频繁的项目中,重复执行相同的测试用例容易出错,而自动化测试可以:
快速回归测试。
提高测试覆盖度。
减少人为错误。
生成可视化测试报告。
unittest 是 Python 内置的单元测试框架,类似于 Java 的 JUnit,支持:
测试用例编写
测试套件组织
断言功能
测试报告输出
示例:一个简单的计算器类测试
# calculator.py class Calculator: def add(self, a, b): return a + b def subtract(self, a, b): return a - b # test_calculator.py import unittest from calculator import Calculator class TestCalculator(unittest.TestCase): def setUp(self): self.calc = Calculator() def test_add_positive_numbers(self): result = self.calc.add(2, 3) self.assertEqual(result, 5) def test_add_negative_numbers(self): result = self.calc.add(-1, -1) self.assertEqual(result, -2) def test_subtract(self): result = self.calc.subtract(5, 3) self.assertEqual(result, 2) if __name__ == '__main__': unittest.main() |
运行测试,结果为:

虽然结果直观,但不够“专业”。我们需要更清晰的报告!
HTMLTestRunner 是一个第三方库,可以将测试结果生成为美观的 HTML 报告,便于团队共享与查看。
安装依赖:pip install HTMLTestRunner
注意:如果你使用的是较新版本的Python,建议安装 html-test-runner 或使用 pytest-html 替代。
示例:整合HTMLTestRunner 生成报告
# run_test.py import unittest import HTMLTestRunner import os # 加载测试用例 suite = unittest.TestLoader().loadTestsFromTestCase(TestCalculator) # 指定报告路径 report_file = './test_report.html' with open(report_file, 'wb') as f: runner = HTMLTestRunner.HTMLTestRunner( stream=f, title='计算器测试报告', description='测试计算器加减法 功能' ) runner.run(suite) print("测试报告已生成:", report_file) |
运行脚本后,会生成一个名为test_report.html 的文件,打开它可以看到:
测试总览(通过/失败/错误)
每个测试用例的详细信息
执行时间、日志记录
美观的表格展示
当项目变大时,我们可能有多个测试文件。这时就需要使用测试套件(Test Suite)来统一管理。
# test_suite.py import unittest import HTMLTestRunner import os # 获取当前目录下的所有测试文件 test_dir = './tests' discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py') # 生成报告 report_path = './all_tests_report.html' with open(report_path, 'wb') as f: runner = HTMLTestRunner.HTMLTestRunner( stream=f, title='全部测试报告', description='集成所有模块测试' ) runner.run(discover) |
这样就可以一次性运行多个测试模块,自动生成综合报告。
可视化展示,图表形式呈现测试结果 。
易于分享,可直接发送给产品经理或项目经理 。
问题定位快,失败用例可点击查看详情 。
支持多环境,适合CI/CD 集成 。
编写测试用例→ 使用 unittest.TestCase 。
组织测试套件→ 使用 TestSuite 或 discover 。
执行测试并生成报告→ 使用 HTMLTestRunner。
自动化测试不是“写完就不管”,而是持续改进、持续反馈的过程。掌握unittest和 HTMLTestRunner,是你迈向高效测试的第一步。