写点什么

单元测试|unittest 生成测试报告

  • 2023-08-02
    北京
  • 本文字数:1845 字

    阅读完需:约 6 分钟

unittest 生成测试报告

测试报告为测试结果的统计即展示,是自动化测试不可或缺的一部分,利用 unittest 可以生成测试报告。

使用第三方 HTMLTestRunner 执行测试用例集,生成网页版测试报告

HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,在使用该模块之前 要下载 HTMLTestRunner.py 文件,并将该文件保存在 python 安装路径下的 lib 文件夹或者 是项目的子包中,在 python 代码中通过 import HTMLTestRunner 导入,即可使用。


HTMLTestRunner 常用参数介绍:


  • stream: 配置测试报告要保存的文件路径

  • title:测试报告标题

  • description: 测试报告的描述信息


代码示例:


# 使用discover()来实现添加执行整个目录下所有的测试用例import osimport unittestimport HTMLTestRunnerimport time
# 获取当前路径curren_path = os.path.dirname(__file__)# 获取测试用例目录的路径case_path = os.path.join(curren_path,"all_case")
# 从当前路径回到上一层路径# case_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
# 匹配测试用例路径下的所有的测试方法discover = unittest.defaultTestLoader.discover(start_dir=case_path, # 用例路径 pattern="*_case*.py", top_level_dir=None) # 文件类型# 创建主套件main_suite = unittest.TestSuite()# 把测试用例路径添加到主套件中main_suite.addTest(discover)# 执行主套件里的测试用例;如果要生成测试报告,则不通过unittest.main()方法执行# unittest.main(defaultTest="main_suite",verbosity=2)

# 执行并生成测试报告# 加个时间戳now = time.strftime("%y-%m_%d_%H_%M_%S_",time.localtime(time.time()))# 创建html类型测试报告对象,将执行的过程写入到file_obj中file_obj = open("D:/pythonProject/P7_P8_Requests/" "unittest框架/test_report/" "{}test_report.html".format(now),"w+",encoding="utf-8")# 创建配置html测试报告的相关信息的对象runner = HTMLTestRunner.HTMLTestRunner(stream=file_obj, title="第一次的测试报告", description="我是测试报告的描述信息")# 生成html测试报告;如果要生成测试报告,则不通过unittest.main()方法执行runner.run(main_suite)
复制代码


查看执行结果



配置详细的 html 测试报告


在测试用例中加上注释信息,即可在 html 报告中体现,能更好的展示每个用例的信息


一、通过添加 3 对双引号:"""内容"""


通过在类的下面添加 3 对双引号 """测试类 01 的详细信息""";在测试方法下面添加 3 对双引号 """test_aaa 方法的详细信息""";如下图:



在生成的测试报告中可更好的展示每条用例的作用



二、只在测试方法中添加


self._testMethodName=设置测试用例名称 self._testMethodDoc=设置测试用例详情


注:上方下划线只有一个


在测试用例方法中添加注释信息;如下图



查看生成的测试报告


通过 TextTestRunner()方法生成 text 类型的测试报告

代码示例如下:


# 使用discover()来实现添加执行整个目录下所有的测试用例import osimport unittestimport HTMLTestRunnerimport time
# 获取当前路径curren_path = os.path.dirname(__file__)# 获取测试用例目录的路径case_path = os.path.join(curren_path,"all_case")
# 从当前路径回到上一层路径# case_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
# 匹配测试用例路径下的所有的测试方法discover = unittest.defaultTestLoader.discover(start_dir=case_path, # 用例路径 pattern="*_case*.py", top_level_dir=None) # 文件类型# 创建主套件main_suite = unittest.TestSuite()# 把测试用例路径添加到主套件中main_suite.addTest(discover)# 执行主套件里的测试用例;如果要生成测试报告,则不通过unittest.main()方法执行# unittest.main(defaultTest="main_suite",verbosity=2)

# 生成text类型的测试报告with open('./report/test_result.txt','w',encoding='utf-8') as file: test_runner = unittest.TextTestRunner(stream=file,descriptions="执行用例的测试报告", verbosity=2) test_runner.run(main_suite)
复制代码


查看执行结果



获取更多技术资料,请点击!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
单元测试|unittest生成测试报告_Python_霍格沃兹测试开发学社_InfoQ写作社区