Cucumber 命令行选项



Cucumber 可用于测试几乎任何计算机系统。到目前为止,我们已经了解了如何使用 Eclipse IDE 运行测试。还有一种方法可以通过命令行界面运行 Cucumber 测试。那么这样做有什么好处呢?

从终端运行任何测试框架都有其自身的优势,例如覆盖代码中提到的运行配置。

为了使用命令提示符执行 Cucumber 测试,请在系统配置后执行以下步骤。

步骤 1 - 创建一个名为 commandLine 的 Maven 测试项目。

  • 转到 文件 → 新建 → 其他 → Maven → Maven 项目 → 下一步。

  • 提供 Group Id(Group Id 将唯一标识您在所有项目中的项目)。

  • 提供 Artifact Id(Artifact Id 是 jar 的名称,不包含版本号。您可以选择任何小写名称)。

  • 单击完成。

  • 打开 pom.xml -

    • 转到 Eclipse 左侧的包资源管理器。

    • 展开项目 CucumberTest。

    • 找到 pom.xml 文件。

    • 右键单击并选择选项“使用“文本编辑器”打开”。

  • 添加 Selenium 的依赖项 - 这将指示 Maven 从中央存储库下载哪些 Selenium jar 文件到本地存储库。

    • 在编辑模式下打开 pom.xml,在 project 标签内创建 dependencies 标签(<dependencies></dependencies>)。

    • 在 dependencies 标签内,创建 dependency 标签(<dependency></dependency>)。

    • 在 dependency 标签内提供以下信息。

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • 添加 Cucumber-Java 的依赖项 - 这将指示 Maven 从中央存储库下载哪些 Cucumber 文件到本地存储库。

    • 创建另一个 dependency 标签。

    • 在 dependency 标签内提供以下信息。

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • 添加 Cucumber-JUnit 的依赖项 - 这将指示 Maven 从中央存储库下载哪些 Cucumber JUnit 文件到本地存储库。

    • 创建另一个 dependency 标签。

    • 在 dependency 标签内提供以下信息。

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • 添加 JUnit 的依赖项 - 这将指示 Maven 从中央存储库下载哪些 JUnit 文件到本地存储库。

    • 创建另一个 dependency 标签。

    • 在 dependency 标签内提供以下信息。

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • 验证二进制文件。

    • 成功编辑 pom.xml 后,保存它。

    • 转到 项目 → 清理 - 这需要几分钟。

步骤 2 - 在 src/test/java 下创建一个名为“outline”的包

步骤 3 - 创建一个名为“commandLine.feature”的功能文件。

  • 选择并右键单击 outline 包。

  • 单击“新建”文件。

  • 给文件命名,例如“commandLine.feature”

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

    功能 - 场景轮廓

    场景轮廓 - 社交网站登录功能。

    给定用户导航到 Facebook

    当我输入用户名为“<username>”和密码为“<password>”时

    然后登录应该失败

示例

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

注意 - 在这里,example 注解描述了在场景执行时要提供的输入范围。对于提供的每个输入,测试场景都将执行。因此,在给定的示例中,测试场景将执行三次。

步骤 4 - 创建一个步骤定义文件。

  • 选择并右键单击 outline 包。

  • 单击“新建”文件。

  • 将文件命名为 commandLine.java

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

package Outline;
 
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; i
import cucumber.annotation.en.When; 

public class stepdefinition { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") 
   public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
      driver.findElement(By.id("email")).sendKeys(arg1);
      driver.findElement(By.id("pass")).sendKeys(arg2);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}

注意 - 在代码中,我们必须定义一个具有两个输入参数的函数:一个用户名,另一个用于密码。因此,对于 example 标签中提供的每一组输入,将执行 GIVEN、WHEN 和 THEN 的集合。

步骤 5 - 创建一个运行器类文件。

  • 选择并右键单击 outline 包。

  • 单击“新建”文件。

  • 给文件命名,例如 runTest.java

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

package Outline;
 
import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • 打开命令提示符。

  • 转到此包“commandLine”所在的目录。e:\Workspace\LoginTest\src>cd test\java

  • 运行命令 mvn test:您将看到功能文件中描述的所有场景都已执行(如果没有错误)。最后,在底部您将找到以下信息。

结果

This describes the total test run, along with failure if any.

前面的命令运行 JUnit Runner 类中提到的所有内容。但是,如果我们想要覆盖 Runner 中提到的配置,以下是一些示例。

  • 现在在命令提示符上运行命令 mvn test - Dcucumber.options="--help"。运行此命令将打印所有可用选项。

  • 要仅运行特定标签,请在命令提示符上运行命令 mvn test -Dcucumber.options="--tags @SmokeTest"。它将只运行标有 @SmokeTest 的标签。

  • 为了更改结果的格式,请在命令提示符上运行命令 E:\Workspace\LoginTest>mvn test -Dcucumber.options="--plugin junit:target/cucumber-junit-report.xml"。它将报告格式更改为 JUnit 报告生成器。

广告