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

阿廉 · November 23, 2018 · Last by 阿廉 replied at October 03, 2019 · 5021 hits

前言

最近有些同学做自动化出报告,用上了高逼格的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 定制报告

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

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

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

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

霂雨 回复

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

阿廉 回复

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

霂雨 回复

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

阿廉 回复

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

霂雨 回复

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

阿廉 回复

好的 非常感谢😃

廉总 可以的啊

阿廉 #11 · November 28, 2018 作者
战 神 回复

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

请教个问题报告展示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文件也配置了相应的信息

阿廉 #18 · October 03, 2019 作者
丽丽 回复

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up