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

白纸 · 2017年07月10日 · 最后由 gilbert 回复于 2019年02月18日 · 11623 次阅读

前言


前段时间搜到 @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个标签,定义用例等级等
  • 标签 当用例有失败时,自动增加炸弹图标,显示出过错误
  • 展示方式 不再以多次运行结果展示测试结果,而是以用例为基础,多次运行结果在用例详情中展示,
  • 最重要一点,终于显示运行时间了,不用再自己去写附件去看这个用例是什么时候跑的了!
  • 最最重要一点,终于按构筑区分报告了,不用把所以报告都堆在一起自己去挑出哪个报告是这次构筑的了!
  • 汉化的更好了
共收到 108 条回复 时间 点赞

我遇到了在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日 作者
Linny 回复

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

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

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

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

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

白纸 回复

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

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

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

白纸 回复

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

白纸 回复

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

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

@dftx511619 收到😗 😗 😗 😗

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


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

isaac 回复

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

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

huang 回复

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

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

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

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

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

白纸 回复

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

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

我也没看到ant的,改maven😉

白纸 回复

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

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

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

白纸 回复

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

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

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

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

白纸 回复

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

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

白纸 回复

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

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

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

白纸 #41 · 2017年07月26日 作者
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日 作者
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日 作者
Linny 回复

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

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

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

白纸 回复


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

请教一下

wangmcn 回复

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

初晓 回复

嗯,这个是可以了

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

比如:
是怎么回事呢?

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

官方使用文档没更新?

<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日 作者
Eric 回复

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

白纸 回复

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

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

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

白纸 回复

你的maven仓库用的是哪个?

白纸 #59 · 2017年08月04日 作者
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日 作者
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日 作者
初晓 回复

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

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

kaka 回复

通过 Assert.fail 抛出。

白纸 回复

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

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

jenkins 自带邮件通知

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

白纸 #71 · 2017年08月15日 作者
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日 作者
苗培腾 回复

更新 最新的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日 作者
赖少 回复

我只用过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版本不匹配导致的

请教一下,怎么做,我死活搞不出来,大神加个微信: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之后生成报告又出错了

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