美文网首页python接口自动化py接口自动化
python接口自动化(二十七)--html 测试报告——上(详

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

作者: 北京_宏哥 | 来源:发表于2020-04-07 14:29 被阅读0次

    简介

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

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

    导入 HTMLTestRunner

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

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

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

    demo 解析

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

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

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

    生成 html 报告

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

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

      --title:测试报告的主题

      --description:测试报告的描述

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

    测试报告详情

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

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

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

    参考代码

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

    小结

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

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

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

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

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

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

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

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

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

    相关文章

      网友评论

        本文标题:python接口自动化(二十七)--html 测试报告——上(详

        本文链接:https://www.haomeiwen.com/subject/mcqnphtx.html