zl程序教程

您现在的位置是:首页 >  Java

当前栏目

allure测试报告的友好展示方式

2023-02-18 16:34:45 时间

背景

我发现每过一段时间,就会有群友在交流群里面提问:

  • 大家跑完自动化生成的allure测试报告是如何管理的?
  • 我生成的allure测试报告怎么只能本地展示啊?
  • 别人怎么访问我的allure测试报告链接啊, 总不能打个压缩包发给其它人吧?

所以从解决实际问题出发, 我想分享下我是如何展示allure测试报告的~

示例代码

import pytest


class TestLogin:
    def test_1(self):
        print("用例1")
        assert True

    def test_2(self):
        print("用例2")
        assert False

    def test_3(self):
        print("用例3")
        assert False


if __name__ == '__main__':
    # 调试用
    # pytest.main(["-q", "demo.py"])
    
    # 同步生成allure的数据文件
    pytest.main(["-q", "demo.py", "--alluredir", "./report/allure_result",
                 "--junitxml=./report/xml/result.xml"])

上面就是最简单的pytest示例, 共有3个用例,其中1个success, 2个fail.

后续基于这个demo来演示操作~

大家已知的方法

前提条件是: 本地已经配置好pytest, jdk, allure等相关环境了

  1. 本地启动allure的服务, 通过http链接访问 操作:
# 在本地生成allure报告的相关资源文件
pytest 测试脚本.py --alluredir=./my_allure_results

# 本地启动一个allure服务,访问这个资源文件
allure serve ./my_allure_results

实际展示如下, 可以通过 本地实际ip + 随机一个端口号 来访问这个allure测试报告

  1. 本地生成html文件,本地访问这个html的方式
# 在本地生成allure报告的相关资源文件
pytest 测试脚本.py --alluredir=./my_allure_results

# 生成html格式的测试报告
allure generate  ./my_allure_results

执行完allure generate命令后, 会在本地生成文件夹allure-report, 里面有个index.html.

然后这个html不能直接打开(数据不会显示出来),目前已知的是可以通过pycharm来打开

实际解决方法

目前比较推荐的方式是将pytest体系和Jenkins进行集成, 因为Jenkins是有一些完善的插件和钩子函数, 很容易进行集成, 展示也特别友好!

首先一共生成2个测试报告, 1个是allure的报告, 另1个是通过邮件发送的测试报告(基于自定义的html模板)

allure的测试报告时通过Jenkins的插件进行展示和运行的, 收到邮件的人员可以点击邮件中的报告链接, 即可跳转到指定的测试报告界面

优点:

  1. allure报告是基于Tomcat + Jenkins运行在服务器上的, 访问只需要一个http链接.
  2. 通过测试结果和邮件通知的结合,极大方便了相关人员对于测试报告的查看请求.

比如:

  • 通过邮件中的html可以查看本次运行情况的概述(成功数, 失败数这些);
  • 点击对应的http链接, 即可立马跳转到对应的构建页面或者测试报告页面, 而不是以前那样需要在Jenkins上进行多次跳转才可以,很方便~
  1. 邮件中的html是自己定制的, 只需要基本的前端基础即可进行二次开发, 上手难度较低

「邮件中的测试报告报告截图」

「allure的测试报告截图(Jenkins中)」

具体操作

1.将项目代码上传到linux上, 并配好python, allure相关环境, 确保可正常运行

配置相关环境可参考链接:

http://t.zoukankan.com/chenxiaomeng-p-14109943.html
  1. 首先手动运行下demo.py, 确保结果符合预期.预期如下:

预期结果如下

  • 可正常显示pytest的运行结果
  • report目录下生成allure_result 和 xml目录
  • xml目录下生成result.xml文件
  1. 下载Jenkins的相关插件

allure相关插件

邮件相关插件

  1. 配置Jenkins

主要就是建立一个自由风格的job, 添加一些构建后操作就行 这里是将运行的py文件放入jenkins的根目录去执行的, 因为Jenkins的很多路径操作都是相对于自己工作空间的相对路径, 后续操作比较方便!

  • 这是指定运行文件
  • 添加构建后步骤1(这个填的是allure报告的资源文件目录)
  • 添加构建后步骤2(这个填的是生成xml文件的位置)
  • 添加构建后步骤3(发送邮件相关)

这里指定了个html_template.html文件, 代码如下

<table width="950px" border="2px" style="border-collapse: collapse;text-align: center;">
<caption style="font-size: 27px;font-weight:bold; margin-bottom: 26px;margin-top: 5px">接口自动化测试报告</caption>
    <tr>

        <td style="font-weight:bold">测试人员</td>

        <td>Administrator</td>

        <td style="color: #1c94c4;font-weight:bold;font-size: 20px">用例总数</td>

        <td style="width: 30px">${TEST_COUNTS,var="TOTAL"}</td>

    </tr>

    <tr>

        <td style="color: #d58512;font-weight:bold">构建序号</td>

        <td>${BUILD_NUMBER}</td>

        <td style="color: #00A000;font-weight:bold;font-size: 20px">成功用例</td>
        <td>${TEST_COUNTS,var="PASS"}</td>

    </tr>

    <tr>

        <td style="color: #BB6688;font-weight:bold">构建结果</td>

        <td>${BUILD_STATUS}</td>

        <td style="color: indianred;font-weight:bold;font-size: 20px">失败用例</td>
        <td>${TEST_COUNTS,var="FAIL"}</td>

    </tr>
    <tr>

        <td style="color: #9d9d9d;font-weight:bold">本次构建地址</td>

        <td>${BUILD_URL}</td>

        <td style="color: #8a6d3b;font-weight:bold;font-size: 20px">跳过用例</td>
        <td>${TEST_COUNTS,var="SKIP"}</td>

    </tr>
    <tr>

        <td style="color: #795da3;font-weight:bold">allure报告查看地址</td>

        <td colspan="3">${BUILD_URL}allure</td>


<!--        <td>23</td>-->

    </tr>
<!--    <tr>-->
<!--        <td>jenkins url</td>-->
<!--        <td>${JENKINS_URL}</td>-->
<!--    </tr>-->

</table> 

这个模板的大致原理是:

Jenkins提供了一些钩子函数, 比如说: 通过${BUILD_URL}可以打印本次job的构建地址 等。然后我们可以根据这些钩子函数进行「二次拼接」, 生成我们想要的地址信息, 如allure报告地址!

  • 最后保存运行即可, 预期是可以在邮件中收到自定义html格式的测试报告