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

举报
霍格沃兹测试开发 发表于 2023/01/31 17:41:25 2023/01/31
【摘要】 unittest生成测试报告测试报告为测试结果的统计即展示,是自动化测试不可或缺的一部分,利用unittest 可以生成测试报告。 使用第三方 HTMLTestRunner 执行测试用例集,生成网页版测试报告HTMLTestRunner是Python标准库的unittest模块的一个扩展,在使用该模块之前 要下载HTMLTestRunner.py文件,并将该文件保存在python安装路径下...

unittest生成测试报告

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

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

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

HTMLTestRunner常用参数介绍:

  • stream: 配置测试报告要保存的文件路径
  • title:测试报告标题
  • description: 测试报告的描述信息

代码示例:

# 使用discover()来实现添加执行整个目录下所有的测试用例
import os
import unittest
import HTMLTestRunner
import 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 os
import unittest
import HTMLTestRunner
import 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)

查看执行结果

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。