extentreports 测试报告

只支持java、.Net

  • 先在pom.xml文件中加入包引用
 <!-- report-->
<dependency>
<groupId>com.vimalselvam</groupId>
<artifactId>cucumber-extentsreport</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>3.0.6</version>
</dependency>
<dependency>
  <groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.40.2</version>
</dependency>

  • 进入你的cucumber入口主类中

    • CucumberOptions中加入插件的属性
    • @BeforeClass注解方法中,可以使用setReportPath方法指定插件的报告生成位置
    • @AfterClass注解方法中,可以使用loadXMLConfig方法指定报告配置文件的位置
@RunWith(Cucumber.class)
@ContextConfiguration("classpath:cucumber.xml")
@CucumberOptions(
plugin = {"com.cucumber.listener.ExtentCucumberFormatter:target/extent-report/report.html"},//
format = {"json:target/cucumber-report.json","pretty"},//
features = {"src/test/resources/com/features/"},
glue = {"com.steps"},
tags = {
"@login,@role"
})
public class CucumberStart {
@BeforeClass
public static void setup() {
ExtentProperties extentProperties = ExtentProperties.INSTANCE;
extentProperties.setReportPath("target/extent-report/myreport.html");
// extentProperties.setExtentXServerUrl("http://localhost:1337");
extentProperties.setProjectName("xxx");
}
@AfterClass
public static void tearDown() {
Reporter.loadXMLConfig(new File("src/test/resources/extent-config.xml"));//
Reporter.setSystemInfo("user", System.getProperty("user.name"));
Reporter.setSystemInfo("os", "Windows");
Reporter.setTestRunnerOutput("Sample test runner output message");
}
}

extent-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<extentreports>
<configuration>
<theme>dark</theme>
<encoding>UTF-8</encoding>
<documentTitle>Cucumber Extent Reports</documentTitle>
<reportName>Cucumber Extent Reports</reportName>
<!--<reportHeadline> - v1.0.0</reportHeadline>-->
<protocol>https</protocol>
<dateFormat>yyyy-MM-dd</dateFormat>
<timeFormat>HH:mm:ss</timeFormat>
<scripts>
<![CDATA[
$(document).ready(function() {
});
]]>
</scripts>
<!-- custom styles -->
<styles>
<![CDATA[
]]>
</styles>
</configuration>
</extentreports>

基础环境搭建后,运行报错

Exception in thread "main" cucumber.runtime.CucumberException: Failed to instantiate public cucumber.runtime.java.JavaBackend(cucumber.runtime.io.ResourceLoader) with [cucumber.runtime.io.MultiLoader@15bb6bea]

可能是pom.xml文件配置错误,或者maven包未更新下来

主意配置:

cucmber-junit

cucumber-java

junit

Error:(9, 8) java: 类TestSteps是公共的, 应在名为 TestSteps.java 的文件中声明

public类一个文件只能有一个,并且和文件名要相同

Error:(11, 6) java: 找不到符号

符号:   类 When

位置: 类 com.future.sys.AppTest

引入包

import cucumber.api.PendingException;
import cucumber.api.java.en.When;
import cucumber.api.java.en.And;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;

cucumber.runtime.CucumberException:

Classes annotated with @RunWith(Cucumber.class) must
not define any

Step Definition or Hook methods. Their sole purpose
is to serve as

an entry point for JUnit. Step Definitions and
Hooks should be defined

in their own classes. This allows them to be reused
across features.

Offending class: class com.future.sys.AppTest

@RunWith(Cucumber.class)不能定义任何步骤或钩子方法。他们唯一的目的是充当JUnit的切入点。应在他们自己的classes进行定义和挂钩。允许它们跨功能重用。

java.lang.IllegalStateException: The path to the
driver executable must be set by the webdriver.chrome.driver system property; for more information, see
https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version
can be downloaded from http://chromedriver.storage.googleapis.com/index.html

未设置Driver插件,下载driver插件,放置目录下,然后再程序classes中配置

System.setProperty("webdriver.chrome.driver","C:\\chromedriver.exe");

org.openqa.selenium.WebDriverException: unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"(178AED370C406FDFCCBE0E4F62CA1D53)","isDefault":true},"id":1,"name":"","origin":"://"}

(Session info: chrome=64.0.3282.186)

(Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)

Command duration or timeout: 0 milliseconds

Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T15:28:36.4Z'

System info: host: 'MININT-VAGEPAQ', ip: '30.40.97.11', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_162'

Driver info: org.openqa.selenium.chrome.ChromeDriver

Capabilities [{applicationCacheEnabled=false, rotatable=false, chrome={userDataDir=C:\Users\WB-ZJ3~1\AppData\Local\Temp\scoped_dir47624_12669}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, version=64.0.3282.186, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, platformName=XP, cssSelectorsEnabled=true}]

Session ID: e14f8466a91a11e2e5f98e93a7e7c7df

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

driver版本与浏览器版本不兼容,参考

chromedriver版本 支持的Chrome版本

v2.35

v62-64

v2.34

v61-63

v2.33

v60-62

v2.32

v59-61

v2.31

v58-60

v2.30

v58-60

v2.29

v56-58

v2.28

v55-57

v2.27

v54-56

v2.26

v53-55

v2.25

v53-55

v2.24

v52-54

v2.23

v51-53

v2.22

v49-52

v2.21

v46-50

v2.20

v43-48

v2.19

v43-47

v2.18

v43-46

v2.17

v42-43

v2.13

v42-45

v2.15

v40-43

v2.14

v39-42

v2.13

v38-41

v2.12

v36-40

v2.11

v36-40

v2.10

v33-36

v2.9

v31-34

v2.8

v30-33

v2.7

v30-33

v2.6

v29-32

v2.5

v29-32

v2.4

v29-32

附: 
所有chromedriver均可在下面链接中下载到:

http://chromedriver.storage.googleapis.com/index.html

运行story时,打开多个浏览器

使用全局变量存储Driver

点击菜单后,获取不到ifream中元素

>>> 进入Iframe进行处理

@ContextConfiguration("classpath:cucumber.xml")飘红报错

在pop.xml中配置:

    <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
注意test必须去掉,否则还是会飘红

cucumber:extentreports集成报告的更多相关文章

  1. 行为驱动:Cucumber + Selenium + Java(五) - 使用maven来实现cucumber测试和报告

    在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的测试用例参数化/数据驱动,这一篇我们来使用maven去搭建cucumber框架以及实现测试报告. 5.1 为什么要用m ...

  2. Jmeter(二十九)Jmeter-Question之“Ant集成报告模板优化”

    也是在和朋友探讨的时候,发现一个问题,Jmeter在与Ant集成的时候,通常选用的模板是jmeter自带的两个样式表 该自带的样式,节省了大家搭建框架的时间,不需要自己重新写样式,当然也相对简洁: 做 ...

  3. 使用extentreports美化报告

    无意之间在整理testng 报告输出的文档时,发现一个美化testng的报告的插件,感觉确实“漂亮”,但是还不确定是否实用,案例来自官方网站自己添了一些内容,更改了存放路径,本地目前已确定可正常运行, ...

  4. Jenkins持续集成报告列表显示不正确的问题解决

    利用robotframework+jenkins对系统进行持续集成,近段时间发现某一系统的Jenkins报告输出列表显示的执行用例数量不对.如图: 经检查发现Configure -- Post-bui ...

  5. Jenkins+allure集成报告构建

    1.点击新建item,新建一个job 对这个job进行配置 General模块,点击高级 勾选自定义的工作空间,填写项目目录 构建触发器和构建环境先不填写 构建模块,填写python main.py, ...

  6. 行为驱动:Cucumber + Selenium + Java(二) - extentreports 测试报告+jenkins持续集成

    1.extentreports 测试报告 pom文件 <dependency> <groupId>com.vimalselvam</groupId> <art ...

  7. extentreports报告插件与testng集成(二)

    之前的一篇文章中,是把extentreports 的报告的初始方法写在driver的初始方法中,写报告的方法在testng的 onTest中,这次将这些方法全都拆出来,写在一个方法类中,这个类重现实现 ...

  8. Cucumber命令行接口

    1. cucumber的命令行选项 首先查看命令行选项.和其它命令行工具一样,cucumber提供了—help选项.下面是cucumber帮助的一个缩减版本: $ cucumber --help -r ...

  9. 【Cucumber】【命令行】

    知识点 参考:https://www.cnblogs.com/worklog/p/5253297.html cucumber的命令行选项 首先查看命令行选项.和其它命令行工具一样,cucumber提供 ...

随机推荐

  1. 使用Flask-Mail发送邮件

    简介 在WEB开发时,我们常常会使用到发送邮件的功能,注册时或者更换密码时,需要验证邮箱,在flask的扩展中有Flask-mai来帮助完成这一功能 配置 flask-mail发送邮件需要你提供你的邮 ...

  2. 【JS学习】慕课网4-10 编程练习

    在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名.性别.年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦. 学生信息如下: ('小 ...

  3. Java中如何实现序列化,有什么意义?

    序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.序列化是为了解决对象流读写操作时可能引发的问题(如果不进行序 ...

  4. Linux part2(系统的相关设置变更)

    修改Linux的系统语言 首先查看当前系统的语言 1.echo $LANG 查看当前操作系统的语言 中文:zh_CN.UTF-8 英文: en_US.UTF-8 2.临时更改默认语言,当前立即生效 重 ...

  5. vue 重定向

    //重定向 { path: '/*', component: Home}

  6. dubbo管理平台安装

    dubbo-admin.war可在网上百度去下载,但是我下载了好几个,发布上去服务启动都报错,这个时候大概是我们系统的JDK和编译dubbo-admin.war的JDK版本不同导致的了,强烈建议自己下 ...

  7. 一个比较独特的"HelloWorld"

    为什么说是特殊的helloworld呢给全世界的服务器发送一个请求,这就是我"打招呼"的方式核心内容就是:向所有的ipv4地址发送一个请求即x.x.x.x,如果其是web服务,就拿 ...

  8. png图标任意赋色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. PHP ftp_mkdir() 函数

    定义和用法 ftp_mkdir() 函数在 FTP 服务器上创建一个新目录. 如果成功,该函数返回新目录的名称和路径.如果失败,则返回 FALSE. 语法 ftp_mkdir(ftp_connecti ...

  10. vue简单的input校验手机号

    <input class="phone input-style " :class="{'err-input' : phone.err}" v-model= ...