开源测试工具 Allure 报告生成踩坑与持续集成方法

阿廉 · 2018年11月23日 · 最后由 lulilusu 回复于 2020年06月01日 · 898 次阅读

前言

最近有些同学做自动化出报告,用上了高逼格的 Allure;可是按照官网添加依赖,执行 mvn clean test;并没有生成报告。今天在这里说下问题和解决方法以及如何持续集成。
补充
@smartnaruto发现没有生成报告目录的问题;
@l_smile 发现 allure 报告生成路径问题;
感谢两位的付出,更准确的描述问题的起因和报告生成的路径问题,并且给出相应的解决方案。

问题

Allure 我就不多介绍了,直接看官网介绍即可 传送门
Allure 支持 jUnit 和 TestNG 框架,我们的同学都有涉猎,但是问题都是执行 mvn clean test,之后 target 文件夹下并没有生成相应报告目录,如下图:

原因是由于 maven-surefire-plugin 依赖,生成报告的规则,如图:

命名规则必须符合:

"**/Test*.java" 
"**/*Test.java" 
"**/*Tests.java" 
"**/*TestCase.java"

如果不符合这些命名,可以在 pom.xml 添加

<includes>
  <include>Sample.java</include>
</includes>

详细操作请看下方解决方法。

解决方法

虽然前面写了这么多,但是解决方法非常简单,当前有两种方法:
第一种:
将测试类统一重命名为符合规范的名称:

第二种:
在 pom.xml 里面添加一段配置即可:

<includes>
  <include>**/**.java</include>
</includes>

添加位置:

TestNG 可以加 xml 配置文件,位置和上面相同:

<suiteXmlFiles>
    <suiteXmlFile>
        allure.xml
    </suiteXmlFile>
</suiteXmlFiles>

使用以上两种方法,任意一种我们再运行mvn clean test,target 目录显示如下:

生成 allure-results 和 surefire-reports 两个文件。
运行allure serve allure-results或者allure serve target/surefire-reports,均可生成报告:
allure-results:

surefire-reports:

但是 allure-results 是标准的 allure 生成的报告,surefire-reports 是 maven-surefire-plugin 生成的报告;
我们还是按照标准,让 allure-results,在 tagget 文件下生成,需要在 pom.xml 添加

<systemProperties>
                  <property>
                       <name>allure.results.directory</name>
                       <value>${project.build.directory}/allure-results</value>
                </property>
                <property>
                    <name>allure.link.issue.pattern</name>
                    <value>https://example.org/issue/{}</value>
               </property>
 </systemProperties>

添加位置:

再次运行mvn clean test,target 目录显示如下:

之后执行allure serve target/allure-results即可。
附上样例,使用的是第二种方法;

Jenkis 集成

  • 1.安装插件 进入系统管理 - 管理插件,安装 “Allure Jenkins Plugin” 插件:
  • 2.配置 Allure 命令行 进入系统管理 - 全局工具配置-Allure Commandline,新增 “Allure Commandline”:

    我本地有 allure,所以配置一下路径;也可以选择自动安装。
  • 3.job 配置
    构建后展示:

总结

以上是我们同学遇到的一个问题,整理出来希望对大家有帮助;后面还会整理同学们学习过程中遇到比较多的问题。其实遇到问题多看日志,静下心多分析,就会发现问题其实没你想的那么难;上面虽然写了一大串,但只是开始,之后如何定制美观的报告还得好好研究一下,官网示例
社区里面也有很多贴子可以参考,例如:
allure--开源 report 框架阶段性总结介绍
Pytest+Allure 定制报告

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 20 条回复 时间 点赞

是不是学员把测试用例代码放到 src 下了?如果放到 test 下应该是不用配置的吧

阿廉 #18 · 2018年11月25日 Author

用例是在 src/test/java 下面,但还得设置一下。

我把你帖子里的 demo 拷到本地,按照你的 jenkins 配置,jenkins 集成的时候打开页面还是空白的。

霂雨 回复

我觉得可能是平台问题,然后我问了下我们用 windows 的学员,你 “构建后操作” 换一下 “target\surefire-reports” 试试;

阿廉 回复

换过之后还是不行,我在 mac 上操作也没出来。 我用的 jenkins 版本是 2.138.3

阿廉 #15 · 2018年11月26日 Author
霂雨 回复

嗯,jenkisn 版本应该没问题;
你把 d: cd D:\IdeaProjects\alluredemo 这句去掉,只留下 mvn clean test
你去这里执行的,但是 jenkins 查看的应该是 D:\jenkins\workspace 路径下的。

阿廉 回复

恩 我重新复制了一份 alluredemo 代码到 D:\jenkins\workspace 的目录下,然后执行 mvn clean test 成功了。
谢谢你了,困扰了我快一周了这个问题

阿廉 #13 · 2018年11月26日 Author
霂雨 回复

不客气,有问题一起讨论,有坑一起填😁

阿廉 回复

好的 非常感谢😃

廉总 可以的啊

阿廉 #10 · 2018年11月28日 Author
战 神 回复

我还差的远😅
需要大家一起踩坑,一起填;共同进步。

请教个问题报告展示test body的问题。
我本地 mvn clean test运行用例时,生成报告中test case里不展示test body

而通过右键RUN来运行用例时,生成的报告中test case里能正确展示test body,以及各个stepattachment

wolf5 回复

请问解决了吗。我也是一样的问题

${project.build.directory }这个 url 具体是什么,我这边在 target 目录下生成不了 allure-results 文件

丽丽 回复

构建目录,缺省为 target

阿廉 回复

后面用 jenkins 把 allure-result 目录构建出来了,但是报告内容显示为空,Jenkins 和 pom.xml 文件也配置了相应的信息

丽丽 回复

空的话得看下,构建后选择的目录是否正确;

最重要的一步没讲,allure.properties 文件的位置

我通过 jenkins 构建 生成的报告不知道为什么报告日期都是 12.27 号的,本地 idea 调试 mvn test 会出现正确的日期。
麻烦帮帮我 被搞晕了

youcongyao 回复

兄弟这个问题解决了吗,我也遇到了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册