Cucumber - 注释

注释是预定义文本,具有特定含义.它让编译器/解释器知道在执行时应该做什么.黄瓜有以下几个注释;

  • 给定 :

    • 它描述了要执行的测试的先决条件.

    • 示例 :  GIVEN我是Facebook用户

  • 何时 :

    • 它定义了任何测试场景执行的触发点.

    • 示例 : 当我输入"< username>"

  • 然后 :

    • 然后保存要执行的测试的预期结果.

    • 示例 : 然后登录应该成功.

  • :

    • 它提供任意两个语句之间的逻辑AND条件. AND可以与GIVEN,WHEN和THEN语句一起使用.

    • 示例 : 当我输入"< username>"时我输入"< password>"

  • 但是 :

    • 它表示任何两个语句之间的逻辑OR条件. OR可以与GIVEN,WHEN和THEN语句一起使用.

    • 示例 : 那么登录应该是成功的.但不应缺少主页.

  • 情景 :

    • 关键字"情景:"之后需要捕获有关测试场景的详细信息

    • 示例 :

      场景:

      GIVEN我是Facebook用户

      当我输入我的

      并输入我的

      那么登录应该会成功.

      但不应缺少主页.

  • 情景大纲 :  (稍后介绍)

  • 例子 :  (稍后介绍)

  • 背景 :

    • 示例 :

      背景:

      转到Facebook主页.

    • 后台通常具有在每个场景运行之前设置的内容的说明.但是,它会在"Before"挂钩之后执行(稍后介绍).因此,当我们想要设置Web浏览器或者我们想要建立数据库连接时,这非常适合用于代码.

示例场景

让我们自动化场景以便更好地理解注释.

第1步

创建一个名为 AnnotationTest的Maven测试项目.

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

  • 提供组ID(组ID将在所有项目中唯一标识您的项目).

  • 提供工件Id(artifact ID是没有版本的jar的名称.您可以选择任何小写的名称.)

  • 单击Finish.

  • 打开 pom.xml :  

    • 转到包装e Eclipse左侧的xplorer.

    • 展开项目AnnotationTest.

    • 找到pom.xml文件.

    • 右键单击并选择"使用"文本编辑器"打开选项.

  • 为Selenium和minus添加依赖关系;这将指示Maven,将Selenium jar文件从中央存储库下载到本地存储库.

    • 打开pom .xml处于编辑模式,在项目标记内创建依赖项标记(< dependencies></dependencies>).

    • 在依赖项标记内,创建依赖关系标记(< dependency></dependency>).

    • 在依赖关系标记中提供以下信息.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>


  • 为Cucumber-Java添加依赖关系;这将指示Maven,其中Cucumber文件将从中央存储库下载到本地存储库.

    • 再创建一个依赖标记.

    • 在依赖标记中提供以下信息.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>


  • 为Cucumber-JUnit添加依赖项;这将指示Maven,将Cucumber JUnit文件从中央存储库下载到本地存储库.

    • 创建一个更多依赖关系标记.

    • 在依赖关系标记中提供以下信息.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>


  • 为JUnit添加依赖项;这将指示Maven,哪些JUnit文件将从中央存储库下载到本地存储库.

    • 再创建一个依赖标记.

    • 在依赖标记中提供以下信息.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>


  • 验证二进制文件.

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

    • 转到项目→清除去;这将需要几分钟.

第2步

src/test/java

下创建名为Annotation的包

  • 选择新创建的项目.

  • 右键单击并选择"新建".

  • 选择选项作为'套餐'.

  • 将其命名为'注释'.

  • 保存.

第3步

创建名为 annotation.feature 的要素文件.

  • 选择并右键单击在包装大纲上.

  • 点击"新建"文件.

  • 给出提交一个名称,例如 outline.feature .

  • 在文件中写下以下文字并保存.

Feature: annotation 
#This is how background can be used to eliminate duplicate steps 

Background: 
   User navigates to Facebook Given 
   I am on Facebook login page 

#Scenario with AND 
Scenario: 
   When I enter username as "TOM"
   And I enter password as "JERRY" 
   Then Login should fail 

#Scenario with BUT 
Scenario: 
   When I enter username as "TOM" 
   And I enter password as "JERRY" 
   Then Login should fail 
   But Relogin option should be available


步骤4

创建步骤定义文件.

  • 选择并右键单击在包装大纲上.

  • 点击"新建"文件.

  • 给出文件名为 annotation.java

  • 在文件中写下以下文字并保存.

package Annotation; 

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 annotation { 
   WebDriver driver = null; 
   @Given("^I am on Facebook login page$") 
	
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   }
	
   @When("^I enter username as (.*)$") 
   public void enterUsername(String arg1) {   
      driver.findElement(By.id("email")).sendKeys(arg1); 
   }
	
   @When ("^I enter password as (.*)$") 
   public void enterPassword(String arg1) {
      driver.findElement(By.id("pass")).sendKeys(arg1);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^Login should fail$") 
   public void checkFail() {  
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test1 Pass"); 
      } else { 
         System.out.println("Test1 Failed"); 
      } 
      driver.close(); 
   }
	
   @Then("^Relogin option should be available$") 
   public void checkRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test2 Pass"); 
      } else { 
         System.out.println("Test2 Failed"); 
      } 
      driver.close(); 
   }
}


第5步

创建一个runner类文件.

  • 选择并右键单击包大纲.

  • 点击"新建"文件.

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

  • 在文件中写下以下文字并保存.

package Annotation; 

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

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

public class runTest { }


第6步

使用选项 :  

  • 从包资源管理器中选择runTest.java文件.

  • 右键单击并选择选项'运行方式'

  • 选择JUnit测试.


当您运行此类文件时,您将观察到以下内容 :

  • Facebook在新的Firefox网络浏览器实例中打开.

  • TOM将作为输入传递到用户名字段.

  • JERRY将作为输入传递给密码字段.

  • 点击登录.

  • 关于登录失败,浏览器会显示消息.

  • 在控制台中,你会看到印有"测试通行证"

  • 步骤结果1.至5.将用户名重命名为"",密码重写为"".