python接口自动化(二十七)--html 测试报告——上(详解)

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入

1.简介

  上一篇我们批量执行完用例后,生成的测试报告是文本形式的,不够直观,而且报告一般都是发给leader的,所以最好是直观一目了然,为了更好的展示测试报告,最好是生成 HTML 格式的。unittest 里面是不能生成 html 格式报告的,需

要导入一个第三方的模块:HTMLTestRunner。

2.导入 HTMLTestRunner

1.、这 个 模 块 下 载 不 能 通 过 pip 安装了,只能下载后手动导入,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

2、Download 下 HTMLTestRunner.py 文件就是我们需要下载的包。注意点击后会进入其源码,可以通过另存为将其下载下来或者直接Ctrl+A加Ctrl+C,Ctrl+V,推荐另存为

3、下载后手动拖到 python 安装文件的 Lib 目录下

3.demo 解析

1、下载 Download 下的第二个文件 test_HTMLTestRunner.py,这个就是官方给的一个测试demo 了,从这个文件可以找到该模块的用法。

2、找到下图这段,就是官方给的一个 demo 了,test_main()里上半部分就是加载测试 case,我们不需要搞这么复杂。

3、最核心的代码是下面的红色区域,这个就是本篇的重点啦。

4.生成 html 报告

1、我们只需把上面红色区域代码 copy 到上一篇的基础上稍做修改就可以了,这里主要有三个参数: 

  --stream:测试报告写入文件的存储区域

  --title:测试报告的主题

  --description:测试报告的描述

2、report_path 是存放测试报告的地址

5.测试报告详情

1、找到测试报告文件,用浏览器打开,点开 View 里的 Detail 可以查看详情描述。

2、为了生成带中文描述的测试用例,可以在 case 中添加注释,如在 test_01 的脚本添加如下注释:

3、重新运行后查看测试报告

6.参考代码

1 # coding=utf-8
 2 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
 3 
 4 #2.注释:包括记录创建时间,创建人,项目名称。
 5 '''
 6 Created on 2019-4-29
 7 @author: 北京-宏哥
   ​​​​​​​@公众号:北京宏哥(微信搜索,关注宏哥提示解锁更多测试干货)
 8 Project:学习和使用discover批量执行测试用例
 9 '''
10 #3.导入unittest模块
11 import unittest
12 import os
13 #4.编写测试用例和断言
14 def all_case():
15     # 待执行用例的目录
16     #case_dir = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\case"
17     case_dir = os.path.join(os.getcwd(), "case")
18     testcase = unittest.TestSuite()
19     discover = unittest.defaultTestLoader.discover(case_dir,
20                                                    pattern="test*.py",
21                                                    top_level_dir=None)
22     # #discover方法筛选出用例,循环添加到测试套件中
23     # for test_suit in discover:
24     #     for test_case in test_suit:
25     #         #添加用力到testcase
26     #         testcase.addTests(test_case)
27     # print(testcase)
28 
29     testcase.addTests(discover)  # 直接加载 discover    可以兼容python2和3
30     print(testcase)
31     return testcase
32 if __name__ == "__main__":
33     # 返回实例
34     runner = unittest.TextTestRunner()
35     #导入第三方模块HTMLTestRunner
36     import HTMLTestRunner
37     #保存生成报告的路径
38     report_path =  "C:\\Users\\DELL\\PycharmProjects\\honggetest\\report\\result.html"
39     fp = open(report_path,'wb')
40     runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
41                                            title=u"这是我的自动化测试用例",
42                                            description=u"用例执行情况"
43                                            )
44     # run 所有用例
45     runner.run(all_case())
46     #关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。
47     fp.close()

7.小结

1、fp.close()  #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。  如果一个文件在关闭后还对其进行操作会产生ValueError

2、问题: 执行测试用例的过程中,不会打印任何东西,导致上个厕所或第二天回来时,根本不知道执行到哪了,或者执行多少测试用例了。

解决思路: 每次执行一个测试用例时,就打印该测试用例的名称。

解决方案: 调用HTMLTestRunner时,定义 verbosity 为大于1的整数,比如说 2:

runner=HTMLTestRunner.HTMLTestRunner(fp,title="xxxx",description="xxx",verbosity=2)

在控制台console 就可以看到每执行一条用例,就会有如下输出:

3、HTMLTestRunner 脚本源码分析与解释

 1 class OutputRedirector(object)
 2 # 将输出进行重定向
 3 
 4 class Template_mixin(object)
 5 # 定义生成HTML结果文件所需要的模板。
 6 # 如果我们想改变HTML的格式等待,可以在这里进行改动
 7 
 8 class _TestResult(TestResult)
 9 # 定义继承自 unittest.TestResult 的 类。
10 # 这里重写了 unittest.TestResult 的多个方法,比如 startTest(self, test) 等等
11 
12 class HTMLTestRunner(Template_mixin)
13 # 这里可以说是使用 HTMLTestRunner.py 的入口。定义了多个我们可以看到的方法,比如 run(self, test)
14 
15 class TestProgram(unittest.TestProgram)
16 # 这里继承自 unittest.TestProgram 类,重写了 runTests 方法。
17 # 用于命令行执行测试

4、缺点:使用HTMLTestRunner的执行测试用例的过程中,如果中间中断执行,则已经执行完的用例结果也不会打印到html文件。

   每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进行接口自动化测试时,生成一份详细的测试报告十分重要,方便开发人员、测试人员和项目经理查看测试结果、定位问题并及时解决。其中,HTML 测试报告是一种简洁明了、易于阅读的报告形式,具有良好的视觉效果和交互性,常被用于接口自动化测试报告的生成。 下面,我们就来详细介绍一下如何使用 Python 生成 HTML 测试报告。 ## 1. 安装 HTMLTestRunner 在 Python 中,我们可以使用第三方库 HTMLTestRunner 来生成 HTML 测试报告。该库可以在 Python2 和 Python3 中使用,提供了多种生成测试报告的方式,并且支持自定义样式和模板。 我们可以使用 pip 命令安装 HTMLTestRunner: ``` pip install html-testRunner ``` ## 2. 编写测试用例 接下来,我们需要编写测试用例,并使用 unittest 框架运行测试用例。这里以一个简单的加法测试用例为例: ```python import unittest class TestAdd(unittest.TestCase): def test_add(self): self.assertEqual(1+2, 3) ``` ## 3. 生成 HTML 测试报告 使用 HTMLTestRunner 生成 HTML 测试报告非常简单。我们只需要在测试用例中添加几行代码即可: ```python import unittest from html_testRunner import HTMLTestRunner class TestAdd(unittest.TestCase): def test_add(self): self.assertEqual(1+2, 3) if __name__ == '__main__': # 定义测试套件 suite = unittest.TestSuite() suite.addTest(TestAdd('test_add')) # 定义测试报告的路径和文件名 report_path = './test_report.html' # 打开文件,准备写入测试报告 with open(report_path, 'wb') as report_file: # 定义测试运行器 runner = HTMLTestRunner(stream=report_file, title='接口测试报告', description='测试报告详情') # 运行测试用例 runner.run(suite) ``` 其中,HTMLTestRunner 接受一个 stream 参数,用于指定测试报告输出的文件流,title 参数用于指定测试报告的标题,description 参数用于指定测试报告的详细描述。在运行测试用例之前,我们需要先定义一个测试套件,将要运行的测试用例添加到测试套件中。最后,使用测试运行器运行测试套件,即可生成 HTML 测试报告。 ## 4. 查看测试报告 运行完测试用例后,我们可以在指定的路径下找到生成的测试报告文件 test_report.html。打开该文件,即可查看生成的 HTML 测试报告。 HTML 测试报告中包含了测试用例的执行结果、用例名称、用例执行时间、错误信息等信息,方便开发人员快速定位问题。此外,我们还可以自定义测试报告的样式和模板,使其更符合项目的需求。 至此,我们就介绍了使用 Python 生成 HTML 测试报告的方法。HTML 测试报告的优势在于其可读性高,易于阅读和理解,同时还具有良好的可视化效果和交互性。在接口自动化测试中,HTML 测试报告是一种非常实用的报告形式,可以帮助我们更好地管理测试用例和测试结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值