python自带了用来进行单元测试的框架unittest。这个单元测试框架是受到 JUnit 的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化,配置共享和关机代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。它还能结合selenium来实现页面的自动化测试。总之,它的功能对于我们源码设计师来说十分受用。
现在我们就来说说怎么样能够产生unittest的可视化报告。
所谓可视化报告,就是能够以图表的形式来展现测试结果。我介绍的工具能够产生一个单独html页面,能够打开即结果的效果,而且还能够查看异常信息。
下面是一段unittest源码:
import unittest
class Test(unittest.TestCase):
@classmethod
def setUpClass(self):
print("Class level starting ...")
@classmethod
def tearDownClass(self):
print("Class level teardown ...")
def setUp(self):
print("execute before test case")
def tearDown(self):
print("execute after test case")
def test_one(self):
print('execute test case one')
self.assertTrue(True)
def test_two(self):
print('execute test case two')
if __name__ == '__main__':
unittest.main()
测试报告:
============================= test session starts ==============================
collecting ... collected 2 items
test.py::Test::test_one Class level starting ...
PASSED [ 50%]execute before test case
execute test case one
execute after test case
test.py::Test::test_two PASSED [100%]execute before test case
execute test case two
execute after test case
Class level teardown ...
============================== 2 passed in 0.02s ===============================
Process finished with exit code 0
文字型的测试报告不是那么醒目。下来我们可以引入HTMLTestRunner,该module通过抓取单元测试结果,自动生成可视化测试报告。
在unittest里增加以下代码,自动生成html版可视化报告。
def run_case(all_case):
"""执行所有的用例, 并把结果写入测试报告"""
htmlreport = "result.html"
fp = open(htmlreport, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2, title="接口测试报告", description="用例执行情况")
# 调用add_case函数返回值
runner.run(all_case)
fp.close()
def add_case(case_path='.'):
"""加载所有的测试用例"""
# 定义discover方法的参数
discover = unittest.defaultTestLoader.discover(case_path)
return discover
if __name__ == '__main__':
cases = add_case()
run_case(cases)
报告例子如下:
如想获取HTMLTestRunner.py的源码,请关注我的公众号:源码设计师。
» 转载保留版权:猿码设计师 » 《python unittest web可视化报告》
» 本文链接地址:python unittest web可视化报告 - 猿码设计师
» 如果喜欢可以:关注《猿码设计师》公众号