为了理解产品的稳定性,我们会进行测试执行,因此无论是手动测试还是自动测试,生成可以描述产品稳定性的简明报告非常重要.因此,虽然我们使用Cucumber自动化我们的测试场景,但必须知道我们如何更好地生成我们的Cucumber测试报告.我们知道Cucumber是一个BDD框架,它没有一个奇特的报告机制.
为了实现这一点,我们需要将Cucumber与其他开源工具如Ant/Junit集成.在这里,我们将进一步讨论JUnit,因为它提供了对Java语言的支持.
让我们看看不同报告格式的细节,这些格式可用且易于使用 :
漂亮格式(HTML报告)
Pretty Format以HTML格式生成Cucumber测试报告,即HTML文件.它是最易读的报告格式.它以与特征文件相同的方式生成报告,因此跟踪也很容易.此外,您可以指定在测试执行后放置此报告的位置.它可以是 :
本地目录 : 我们可以将报告的目标目录指定为运行测试的机器的任何本地目录.
服务器目录 : 此外,我们还规定将目标目录指定为服务器上的任何目录,该目录可公开访问.当我们希望我们的客户/利益相关者在任何给定的时间点查看测试结果时,这通常会有所帮助.
示例
让我们自动化一个漂亮格式的例子.
第1步 : 在Eclipse中创建一个名为 cucumberReport 的Maven项目.
第2步 : 在 src/test/java
下创建名为 CucumberReport 的包
步骤3 : 创建名为 cucumberReport.feature
的特征文件
在文件中写下以下文本并保存.
功能 : 黄瓜报告
#这是检查Pass测试用例的测试结果
场景:登录功能存在
鉴于我已打开浏览器
当我打开Facebook网站时
然后应该存在"登录"按钮
#这是检查测试结果失败的测试结果
场景:忘记密码
鉴于我已打开浏览器
当我打开Facebook网站时
然后忘记密码链接
注意 : 这里场景首先通过,而第二个场景将失败.因此,我们可以看到通过和失败报告的样子.
步骤4 : 创建步骤定义文件.
选择并右键单击包装大纲.
点击"新建"文件.
将文件名命名为 cucumberReport.java
在文件中写下以下文字并保存.
package CucumberReport; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import cucumber.annotation.en.Given; import cucumber.annotation.en.Then; import cucumber.annotation.en.When; public class cucumberReport { WebDriver driver = null; @Given("^I have open the browser$") public void openBrowser() { driver = new FirefoxDriver(); } @When("^I open Facebook website$") public void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @Then("^Login button should exits$") public void loginButton() { if(driver.findElement(By.id("u_0_v")).isEnabled()) { System.out.println("Test 1 Pass"); } else { System.out.println("Test 1 Fail"); } } @Then("^Forgot password link should exist$") public void forgotPWD() { if(driver.findElement(By.id("")).isEnabled()) { System.out.println("Test 1 Pass"); } else { System.out.println("Test 1 Fail"); } } }
第5步 : 创建一个运行器类文件.
在包中创建一个名为 runTest.java 的运行器类.
编写以下代码.保存文件.
package CucumberReport; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options( format = {"pretty", "html:target/Destination"} ) //Specifying pretty as a format option ensure that HTML report will be generated. //When we specify html:target/Destination - It will generate the HTML report inside the Destination folder, in the target folder of the maven project. public class runTest { }
使用运行测试选项
从包资源管理器中选择 runTest.java 文件.
右键单击并选择选项,以运行.
选择JUnit测试.
运行此类文件时,您将看到以下内容.
这两个场景都将逐个执行.
将在目标目录中创建一个名为Destination的文件夹.
该报告将命名为"Index.html".
使用网络浏览器打开Index.html.
您将看到下图中提到的报告 :
它正好突出了失败场景的颜色.此外,您将看到该场景中失败步骤的突出显示.这使得调试变得非常简单.
JSON报告
现在我们已经看到了HTML报告的简单程度.但是,如果我们想将此报告信息传递给任何其他应用程序,那么在HTML报告的情况下这很棘手.这需要另一种报告格式. JSON-Java脚本对象表示法是另一种生成Cucumber测试报告的格式. JSON是一个包含大量以文本格式存储的信息的对象. JSON报告为表格带来了不同的值. JSON报告还可以用作要在不同服务器之间传输的信息的有效负载.此外,它可以用于显示为网页.简而言之,JSON报告可以被其他应用程序使用.
什么是有效负载信息?当通过Internet发送数据时,每个传输的单元都包含两个头信息和发送的实际数据.标头标识数据包的源和目标,而实际数据称为有效负载.为了生成JSON报告,我们只需要在转轮文件中进行更改.
更改格式选项在转轮文件中如下.
package CucumberReport; import org.junit.runner.RunWith; import cucumber.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options( format={"json:target/Destination/cucumber.json"}) //When we specify json:target/Destination/cucumber.json - It will generate the JSON report inside the Destination folder, in the target folder of the maven project.public class runTest {}
使用运行测试选项 :
从包资源管理器中选择 runTest.java 文件.
右键单击并选择选项运行方式.
选择JUnit测试.
运行此类文件时,您将观察到以下内容.
这两个方案都将逐个执行.
报告将在那里命名为 cucumber.json (在跑步者中提供) ()
使用文本编辑器打开 cucumber.json 文件.
在放置换行符后,您会看到以下屏幕截图中提到的报告;
注意 : 与HTML报告格式相比,JSON的可读性较差.