Cucumber - 报告


我们进行测试执行是为了了解产品的稳定性,因此无论是手动测试还是自动化测试,生成一份能够描述产品稳定性的简洁报告非常重要。因此,当我们使用 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的功能文件

在文件中写入以下文本并保存。

功能- Cucumber报告

#这是为了检查通过测试用例的测试结果

场景:存在登录功能

鉴于我已经打开了浏览器

当我打开 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文件。

    • 右键单击并选择选项运Behave

    • 选择 JUnit 测试。

当您运行该类文件时,您将观察到以下情况。

这两个场景都会一一执行。

将在目标目录中创建一个名为 Destination 的文件夹。

CucumberJson

该报告将在那里命名为“Index.html”。

使用网络浏览器打开 Index.html。

您将看到下图中提到的报告 -

Cucumber报告

它准确地突出了失败场景的颜色。此外,在这种情况下,您将看到失败步骤的突出显示。这使得调试非常容易。

JSON 报告

到现在为止,我们已经看到 HTML 报告是多么简单。但是,如果我们想要将此报告信息传递给任何其他应用程序,那么对于 HTML 报告来说,这有点棘手。这就需要另一种报告格式。JSON-Java 脚本对象表示法是生成 Cucumber 测试报告的另一种格式。JSON 是一个包含大量以文本格式存储的信息的对象。JSON 报告为表格带来了不同的价值。JSON 报告还可以用作在不同服务器之间传输的信息的有效负载。此外,它可以用于显示为网页。简而言之,JSON 报告可供其他应用程序使用。

什么是负载信息?当数据通过互联网发送时,发送的每个单元都包含标头信息和发送的实际数据。标头标识数据包的源和目的地,而实际数据称为有效负载。为了生成 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文件。

    • 右键单击并选择选项运Behave

    • 选择 JUnit 测试。

  • 当您运行该类文件时,您将观察到以下情况。

    • 这两个场景都会一一执行。

文件夹名称
  • 该报告将在那里命名为cucumber.json(如运行程序类中提供的)。

  • 使用文本编辑器打开cucumber.json文件。

  • 放置换行符后,您将看到以下屏幕截图中提到的报告 -

文本编辑器

注意- 与 HTML 报告格式相比,JSON 的可读性较差。