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

简介

  上一篇咱们批量执行完用例后,生成的测试报告是文本形式的,不够直观,并且报告通常都是发给leader的,因此最好是直观一目了然,为了更好的展现测试报告,最好是生成 HTML 格式的。unittest 里面是不能生成 html 格式报告的,需html

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

导入 HTMLTestRunner

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

二、Download 下 HTMLTestRunner.py 文件就是咱们须要下载的包。注意点击后会进入其源码,能够经过另存为将其下载下来或者直接Ctrl+A加Ctrl+C,Ctrl+V,推荐另存为源码分析

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

demo 解析

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

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

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

 

生成 html 报告

一、咱们只需把上面红色区域代码 copy 到上一篇的基础上稍作修改就能够了,这里主要有三个参数: spa

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

  --title:测试报告的主题

  --description:测试报告的描述

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

测试报告详情

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

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

三、从新运行后查看测试报告

 

参考代码

 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()

小结

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

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

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

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

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

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

三、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 # 用于命令行执行测试

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

原文出处:https://www.cnblogs.com/du-hong/p/10783105.html

相关文章
相关标签/搜索