开源测试工具 Allure2-开源 report 框架介绍 (Allure+Jenkins)

白纸 · 2017年07月10日 · 最后由 0x7C00 回复于 2020年07月23日 · 9613 次阅读

前言


前段时间搜到 @ycwdaaaaallure--开源 report 框架阶段性总结介绍 ,然后发现有 Allure2,页面丰富度及功能增加不少,能够解决一些 Allure 不足的地方,故站在巨人的肩膀上写此介绍.

Allure2


用过 Allure 的肯定知道它是一个 report 框架,支持 Junit/testng 等框架,支持 Jenkins,拥有简介的报告界面,丰富的自定义字段,可以展示你任何想展示的内容到测试报告上.
Allure2 使用说明
Allure2 首页

使用 Jenkins 与 Allure2

pom.xml 主要配置

     <properties>
<aspectj.version>1.8.10</aspectj.version>
</properties>
<dependencies>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>LAST_VERSION</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

Jenkins 配置
安装 Allure 插件
配置 Allure 插件到最新 2.2.1 版本

Jenkins job 中配置

到此 Allure2 与 Jenkins 集成 结束.

Allure 优化内容

  • 首页 只显示最新构筑的错误,方便定位
  • 首页 右下角增加跳回 Jenkins 列表的功能
  • 首页 增加 TREND 曲线
  • 列表 增加以 Package 查看报告
  • 报告详情 更加丰富
  • 标签 增加 2 个标签,定义用例等级等
  • 标签 当用例有失败时,自动增加炸弹图标,显示出过错误
  • 展示方式 不再以多次运行结果展示测试结果,而是以用例为基础,多次运行结果在用例详情中展示,
  • 最重要一点,终于显示运行时间了,不用再自己去写附件去看这个用例是什么时候跑的了!
  • 最最重要一点,终于按构筑区分报告了,不用把所以报告都堆在一起自己去挑出哪个报告是这次构筑的了!
  • 汉化的更好了
共收到 119 条回复 时间 点赞

我遇到了在 jenkins 构建完点击 allure report 空白的问题,请问如何解决?

Linny 回复

额,log 显示什么,我没遇到过.

白纸 回复

请问下报告的趋势图是空的,是要注意设置哪里吗?

怎么和 junit 一起用,都是 testng 的

Linny 回复

我这个刚重装了个 centos 环境的 allure ,也出现空白的情况了.你空白是怎么解决的...

围城 回复

https://docs.qameta.io/allure/2.0/#_junit_4 看下这个说明 是 junit 的

白纸 回复

然后呢,怎么去运行,生成报告

围城 回复

我是用 jenkins 配置,自动生产报告,你不用 jenkins?

Linny 回复

找到原因了,最近 jenkins 的 allure 插件更新了,安装最新插件

需要更新 pom 文件使用方法.
<properties>
<aspectj.version>1.8.10</aspectj.version>
</properties>
<dependencies>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>LAST_VERSION</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

学习一下!

请教下报告的趋势图 trend 是空的,是要设置哪里吗?

白纸 #13 · 2017年07月24日 Author
Linny 回复

趋势图是空的我也刚遇到,我看下怎么解决

请教 汉化怎么搞定的? 谢谢!

我的实现了,希望能得到汉化的秘籍! @zhupengfarmer

白纸 #16 · 2017年07月25日 Author
初晓 回复

左下角 有个小框....里面选语言, 你首页的趋势图出来了吗?

白纸 回复

哦,还真隐蔽, 我的趋势图也是空白。

白纸 #18 · 2017年07月25日 Author
初晓 回复

allure2 还是 bate 中,bug 难免的,...

白纸 回复

不过现在这样子已经很好了,比较强大了

白纸 回复

我的趋势图出来了,貌似得构建运行 2 次 +,才会有趋势图。

白纸 #21 · 2017年07月25日 Author
Linny 回复

@dftx511619 收到😗 😗 😗 😗

请问下,跟 jenkins 集成,也需要在项目中配置 pom 吗?还是直接配置插件?


以及 jenkins 安装插件的时候居然失败了,求解

isaac 回复

这个问题已解决,自己回答下
是 jenkins 的 jdk 是 1.6,而 allure 是 1.7,修改 jenkins 成 1.7 就可以正常安装了

@dftx511619 html 报告是什么生成的呢

huang 回复

就是 @zhupengfarmer 上面的文章内容啊,按照这个步骤弄就行!

白纸 #27 · 2017年07月26日 Author
huang 回复

生产的是测试结果,上面展示了.

白纸 #28 · 2017年07月26日 Author
isaac 回复

看你的项目类型,可以 maven 的 pom install, 可以是 ant 的

白纸 回复

你好,我是 ant 集成的 jmeter 的 jmx 接口自动化测试。这种应该怎么弄呢,我看官方文档里貌似没有 ant 的方式

白纸 #30 · 2017年07月26日 Author
isaac 回复

我也没看到 ant 的,改 maven😉

白纸 回复

但是这个 pom 里得内容加在哪,我的项目里已经有个 pom 了

白纸 #32 · 2017年07月26日 Author
围城 回复

就加在你的项目 pom 里,你要测什么 接口 ui ?

白纸 回复

测接口,我把你给的这个 pom 里的内容全部复制到我的 pom 里 报错了 ide 里

allure2 有官方文档吗,发一下地址,谢谢

白纸 #36 · 2017年07月26日 Author
围城 回复

你学看下 pom 文件怎么写, 然后就能把 allure2 的 pom 配置到你的项目中了😉

白纸 回复

哪项目呢,要创建自由项目还是 maven 的,项目里要怎么配置啊

楼主我又来了。。allure 这个貌似不能跟 jmeter 集成吧,我忙活一大通发现用不了啊

白纸 回复

我按照文档里的 mvn clean test 执行了,然后该怎么做呢

白纸 #40 · 2017年07月26日 Author
围城 回复

首先,你需要去 看下 maven 的东西,pom 文件配置啊, 怎么执行 maven 项目,然后再看下 jenkins 怎么与 maven git/svn 集成.

白纸 #41 · 2017年07月26日 Author
isaac 回复

是这样的,首先 testng /allure 与 maven 集成,让 maven 执行 testng ,让 allure 把 testng 的执行结果收集,然后 通过 jenkins 触发 mavne 执行,jenkins 的 allure 插件 接受 allure 的报告并展示. 至于 jmeter,如果你是 java 代码写 jmeter 测试,而不是 jmeter ide 测试的话,也是这个思路

白纸 回复

我目前就是使用的 java 写 jar 包,jmeter 写测试计划 jmx,然后用 maven 执行 jmx 文件进行的测试。可是我发现 allure 貌似没有 jmx 相关的插件,使用你的 POM 都是 testng 相关的。我现在单独 run eclipse 里的项目,可以测试 OK,在 jenkins 上也可以测试 OK,allure 报告也生成了,只不过就是 allure 报告并没有能够收集到我用 jmx 测试接口的数据
所以现在报告里都是 0

白纸 #43 · 2017年07月26日 Author
isaac 回复

嗯 你可以 用 testng 去执行 jmx ,一样的. 至于你说的数据,需要用到 allure 的定制化报告,这个在 allure 官网介绍有,我是把要展示的内容以附件的方式.
Allure.addAttachment(String name, String type, InputStream content, String fileExtension)

这个方法就在你的报告中添加了一个附件,附件可以是 text image 等等.你展示什么数据都可以这个你详细看下官网介绍吧

想问下 jenkins 为什么会出现 2 个 allure 报告?

白纸 回复

关键的问题就是咋用 testng 去执行 jmx,我之前一直都是用的 maven 直接执行的,POM 中大概这样配置的,然后直接 mvn verify 来执行的 jmx。现在发现我这种集成方式貌似要集成 allure 有点难啊

<plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.0.3</version>
                <configuration>
                    <appendResultsTimestamp>true</appendResultsTimestamp>
                </configuration>
                <executions>
                    <execution>
                        <id>jmeter-tests</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
白纸 #46 · 2017年07月26日 Author
Linny 回复

现在 allure 2 bate 中,会有 bug,这个 bug github 上提了,等修复

白纸 #47 · 2017年07月26日 Author
isaac 回复

额 你这样就不用 testng 了 ,加下我 QQ 吧,应该有办法实现 392527362

白纸 回复


测试结果也有了,但是 allure 里面啥都没,这是为啥?

请教一下

wangmcn 回复

需要这样写, @Test(description="test") 就可以显示了。

初晓 回复

嗯,这个是可以了

但是还有很多方法都不能显示

比如:
是怎么回事呢?

52楼 已删除
白纸 #53 · 2017年08月04日 Author

官方使用文档没更新?

<allure.version>2.0-BETA16</allure.version>
<!-- 引入allure-testng 依赖包 -->
        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-testng</artifactId>
            <version>${allure.version}</version>
        </dependency>

我这么用的 一直可以啊?

白纸 回复

可能是你本地仓库有资源吧,官方文档用的是这段

<dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-testng</artifactId>
    <version>LAST_VERSION</version>
    <scope>test</scope>
</dependency>

昨天第一次用,这个依赖确实下不下来

白纸 #55 · 2017年08月04日 Author
Eric 回复

那你的那段 pom 配置 是哪里来的?

白纸 回复

http://www.mvnrepository.com/ 搜索依赖,然后找到的相关包。。。

白纸 #57 · 2017年08月04日 Author
Eric 回复

我刚把 .m2 中的 16 的包删了, 重新下载,依然可以下载成功.应该是你配置或者网络问题

白纸 回复

你的 maven 仓库用的是哪个?

白纸 #59 · 2017年08月04日 Author
Eric 回复

就是 eclipse 自动生产的

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

你说这个?

白纸 回复

不是这个,但是你这么讲的话可能用的是默认的。
我说的是 maven 的仓库设置,在 conf/settings.xml 里是否有设置镜像

白纸 #61 · 2017年08月04日 Author
Eric 回复

我的 setting 是 下的 apache-maven-3.5.0 里面 带的不是 eclipse 的


为什么我的会是这样,请各位大神指点一下,多谢!😂

白纸 回复

我找到那个依赖了😂

<!-- https://mvnrepository.com/artifact/io.qameta.allure/allure-testng -->
<dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-testng</artifactId>
    <version>2.0-BETA16</version>
</dependency>

白纸 回复

pom 文件的配置 变更了??

白纸 #65 · 2017年08月12日 Author
初晓 回复

嗯 ,jenkns 更新了插件, pom 文件也官方更新了下, 我已经在贴子 里面更改了

@dftx511619 请问下报告中结果中如何生成自定义 log 呢,如:

kaka 回复

通过 Assert.fail 抛出。

白纸 回复

对了,这个可以配置 邮件通知吗?

白纸 #69 · 2017年08月15日 Author
初晓 回复

jenkins 自带邮件通知

@zhupengfarmer 请教一下,使用 allure,脚本中都使用 throws Exception 的形式抛出异常,但是测试报告中并不能把异常详情捕获到,类似
,而实际日志中
,异常能否我们自定义呢

白纸 #71 · 2017年08月15日 Author
huang 回复

定义一个异常类,重写 msg 方法

我的报告打开也是空白,日志是这样的,有碰到类似情况的同学吗?麻烦分享下,感谢

[jmeter-test] $ /var/lib/jenkins/tools/ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation/allure/bin/allure generate -o /var/lib/jenkins/workspace/Jmeter/jmeter-test/allure-report
allure-results does not exists
send analytics
Report successfully generated to /var/lib/jenkins/workspace/Jmeter/jmeter-test/allure-report
Allure report was successfully generated.
Creating artifact for the build.
Artifact was added to the build.

白纸 #73 · 2017年08月16日 Author
苗培腾 回复

更新 最新的 jenkins allure 插件, 用最新的 pom 配置方法就可以了

13.6.3. Usage
You can generate a report using one of the following command:

mvn allure:serve

Report will be generated into temp folder. Web server with results will start.

mvn allure:report

Report will be generated tо directory: target/site/allure-maven/index.html

按照官方给的文档,上面 mvn allure:serve 报告页面有数据,mvn allure:report 得报告没数据,而且打开得时候 app.js 报错了。有解决得办法吗??junit4 的

白纸 #75 · 2017年08月21日 Author

我只用过 jenkins 插件展示报告 , IDE 里面没有试过

Eric 回复

使用这个官方的,我也下载不了 jar 包,你那里解决了吗?

古丶月 回复
<dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-testng</artifactId>
    <version>2.0-BETA18</version>
</dependency>
白纸 回复

用了好久才发现我的 allure2 没有按构建区分结果,报告都是生成在 workspace/allure-results 里。没有生成在 target 文件夹里。
请问你的 maven 配置是怎么做的?

Eric 回复

我也遇到了同样的问题,报告也是生成在 workspace 里,没有到 workspace/target/目录下,同求配置

韩将 回复

配置我找到了,在\src\test\resources\ 添加 allure.properties,内容有 allure.results.directory=target/allure-results

苗培腾 回复

我的也是这样 你现在有解决这个问题吗



请问 有人遇到 这样的问题吗,怎么解决的呀 弄了好久 也没出来数据 谢谢了!!!!

韩将 回复



第一个问题一直没有找到解决办法,第二个我配置的 Results directories 如图但是也不行,报告一直没有生成,是还需要额外的配置吗?
有人知道如何解决吗?😭

lu 回复
<dependency>
        <groupId>io.qameta.allure</groupId>
        <artifactId>allure-testng</artifactId>
        <version>2.0-BETA21</version>
        <scope>test</scope>
    </dependency>

我现在用的这个版本。你是不是版本号填错了 ,附上 git-hub
https://github.com/allure-framework/allure-java

韩将 回复

你用的 testng 什么版本啊?我用这个版本的 allure-testng 报下面的错
java.lang.UnsupportedClassVersionError: io/qameta/allure/testng/AllureTestNg : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at java.util.ServiceLoader$LazyIterator.next(Unknown Source)
at java.util.ServiceLoader$1.next(Unknown Source)
at org.testng.TestNG.addServiceLoaderListeners(TestNG.java:961)
at org.testng.TestNG.initializeConfiguration(TestNG.java:896)
at org.testng.TestNG.run(TestNG.java:1031)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:283)
at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:75)
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:120)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:386)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:323)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:143)

lu 回复

你这个报错是你的 JDK 版本不对啊,你换个 JDK1.8 ,testng 用最新的就可以了

jenkins 上设置了 allure-results 的目录一直无效, 总是提示找不到 allure-results , 有碰过这个情况吗?

初晓 回复

我已经构建了很多次了还是没用趋势图,你知道什么原因吗

我的 allure 启动后,overview 只有一处有数据,其他区域没有数据

以下是 allure 在 pom 文件中涉及到的配置:








楼主大大救命呐,搞了半年没搞出来为什么是空白的,如果看出什么异样就可怜可怜我吧,搞不出来啊......

92楼 已删除

jenkins 运行到失败 case 自动结束,allure 展现不出来错误 case
[ERROR] activate_EntityCard(cashier.ui_Membership_Test) Time elapsed: 13.383 s <<< FAILURE!
io.qameta.allure.AllureResultsWriteException: Could not write Allure test result
Caused by: java.nio.channels.ClosedByInterruptException

[INFO]
[INFO] Results:
[INFO]
[ERROR] Failures:
[ERROR] cashier.ui_Membership_Test.activate_EntityCard(cashier.ui_Membership_Test)
[ERROR] Run 1: ui_Membership_Test.activate_EntityCard:51 Element should be text '收取 20 元' {.confirm-dialognew_title}
Element: '

开卡 '
[ERROR] Run 2: ui_Membership_Test.activate_EntityCard » AllureResultsWrite Could not write Al...
[INFO]
[INFO]
[ERROR] Tests run: 16, Failures: 1, Errors: 0, Skipped: 0
[INFO]
[ERROR] There are test failures.

java.lang.NoSuchMethodError: org.testng.xml.XmlTest.getLocalParameters() Ljav
出现这个问题是因为 testng 版本和 Allure 版本不匹配导致的

在路上 AvatarWebUI 自动化测试工具 中提及了此贴 06月01日 18:35

请教一下,怎么做,我死活搞不出来,大神加个微信:WeiboGe2012

白纸 回复

大神求助啊,完全弄不懂啊,加个微信吧:WeiboGe2012

围城 回复

jenkins 里面路径配置有问题,target/allure-results 改成 **/target/allure-results。我的之前和你的报错一样,这样解决了

应该是 jenkins 里面路径配置有问题,target/allure-results 改成 **/target/allure-results。我的之前和你的报错一样,这样解决了

allure 是根据什么来确定该 Testcase 是否执行呀?目前来看好像不走 testng.xml 呀。

python 环境,有没有遇到ValueError: option names {'--alluredir'} already added报错的,卸载了 pytest-allure-adaptor,留着 allure-pytest、allure-python-commons 结果 ok。。。
jenkins 出现两个报告的情况,2.7 版本没有解决,有没有其他同学遇到
python 环境展示截图内容的操作:

from allure_commons.types import AttachmentType
with pytest.allure.step('截图步骤'):
    allure.attach(self.driver.get_screenshot_as_png(), name="截图", attachment_type=AttachmentType.PNG)
向阳 回复

python 升到 3 以后也遇到了跟你一样的问题,不知道什么原因,你找到解决办法了吗

向阳 回复

不知道你解决没有,应该是因为--alluredir 指定了两个参数导致的,你可以全局搜索一下看是不是框架源码中有一样的参数,我的解决办法是卸载 allure-pytest,我也是困扰了很久,今天问了做开发的同事才发现可能是这个原因,然后卸载一个包以后就好了,希望可以帮到你

趋势图,必须是在 jenkins 上构建才能够出现吗?自己本地构建运行 testng,没有办法得出趋势图吗????

555-555-0199@example.com

Jenkins 执行测试后,点开对应 build 的 allure 报告,地址中 IP 地址是错误的,


有没有朋友遇到这样的问题,就是点开后 url 的 IP 地址不对,不是 Jenkins 的 IP 地址,导致报告打不开。

向阳 回复

找到问题了 Jenkins 换过地址,设置里边 Jenkins URL 没换。。。

阿廉 Allure 报告生成踩坑与持续集成方法 中提及了此贴 11月23日 17:18
韩将 回复

设置一个 自定义的 workspace,genernal/use custom workspace,,将路径指定到项目路径下,allure-results 路径使用相对路径

白纸 回复

可能是因为 没有读取到 allure-results, general/use custom workspace,,,设置路径到项目路径下,就是 POM.XML 所在的路径,allure-results 使用默认的相对路径,这样就可以读到数据了

simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 20:49
simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08
向阳 回复


卸载掉 adaptor 之后生成报告又出错了

大神麻烦问一下,构建过程中 cese 运行成功,但是报告报错:

运行 UI 自动化时,生成 Allure 报告报错,“java.io.IOException: Can't find allure commandline”

是我哪块少配置了吗

Jenkins+Allure+Pytest 环境,构建后用例执行成功,但不会生成报告,而且在项目中点击 Allure Report 显示 404 错误,请教下是什么问题呢?

白纸 回复

请问怎么更新 POM 设置?

仅楼主可见

有没有人遇到 allure 报告的分类页面在 Jenkins 上报 404 吗?
报告其他页面都是正常显示,就是分类页面报 404,有什么好的解决方案吗?

isaac 回复

请问 allure 与 jmeter 结合是怎么用的?

happysnail 回复

请问这个问题解决了吗,如何操作。

请问 case 里设置了 Step 注释。生成的报告里没有 test body。这个是怎么回事?有人遇到过这种情况吗???

请教一下动态 description 可以实现吗?具体就是用例名字是从 excel 读取,dataprovider 驱动,看了官方文档用花括号好像没有效果。

向阳 回复

Jenkins-->manage jenkins-->configure system-->Jenkins Location-->Jenkins URL 更改为新 IP 地址。
这种情况是因为电脑的 IP 动态变化了下,而 Jenkins 的 IP 没有跟随系统动态更新.

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