- Cucumber 教程
- Cucumber - 首页
- Cucumber - 概述
- Cucumber - 环境
- Cucumber - Gherkin
- Cucumber - 特性 (Features)
- Cucumber - 场景 (Scenarios)
- Cucumber - 注解
- Cucumber - 场景大纲 (Scenario Outline)
- Cucumber - 标签 (Tags)
- Cucumber - 数据表 (Data Tables)
- Cucumber - 注释 (Comments)
- Cucumber - Hook
- Cucumber - 命令行选项
- Cucumber - JUnit 运行器
- Cucumber - 报告
- Cucumber - 调试
- Cucumber - Java 测试
- Cucumber - Ruby 测试
- Cucumber 有用资源
- Cucumber - 快速指南
- Cucumber - 有用资源
- Cucumber - 讨论
Cucumber - 注解
注解 (Annotation) 是预定义的文本,具有特定含义。它让编译器/解释器知道在执行时应该做什么。Cucumber 有以下几种注解:
Given -
它描述了执行测试的先决条件。
示例 - GIVEN 我是一个 Facebook 用户
When -
它定义了任何测试场景执行的触发点。
示例 - WHEN 我输入 "<username>"
Then -
Then 包含要执行测试的预期结果。
示例 - THEN 登录应该成功。
And -
它提供任何两个语句之间的逻辑 AND 条件。AND 可以与 GIVEN、WHEN 和 THEN 语句结合使用。
示例 - WHEN 我输入我的 "<username>" AND 我输入我的 "<password>"
But -
它表示任何两个语句之间的逻辑 OR 条件。OR 可以与 GIVEN、WHEN 和 THEN 语句结合使用。
示例 - THEN 登录应该成功。BUT 首页不应该丢失。
Scenario -
在关键字“Scenario:”之后需要捕获被测场景的详细信息。
示例 -
Scenario
GIVEN 我是一个 Facebook 用户
WHEN 我输入我的
AND 我输入我的
THEN 登录应该成功。
BUT 首页不应该丢失。
Scenario Outline - (稍后讲解)
Examples - (稍后讲解)
Background -
Background 通常包含在每个场景运行之前要设置的指令。但是,它在“Before” hook (稍后讲解) 之后执行。因此,当我们想要设置 web 浏览器或建立数据库连接时,这非常适合用于代码。
示例 -
Background
转到 Facebook 首页。
示例场景
让我们自动化一个场景以便更好地理解注解。
步骤 1
创建一个名为 AnnotationTest 的 Maven 测试项目。
转到 文件 → 新建 → 其他 → Maven → Maven 项目 → 下一步。
提供 group Id(group Id 将唯一标识您在所有项目中的项目)。
提供 artifact Id(artifact Id 是 jar 的名称,不包含版本号。您可以选择任何小写的名称)。
单击完成。
打开 pom.xml -
转到 Eclipse 左侧的包资源管理器。
展开 AnnotationTest 项目。
找到 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 下创建一个名为 Annotation 的包
选择新创建的项目。
右键单击并选择“新建”。
选择“包”选项。
将其命名为“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
创建一个运行器类文件。
选择并右键单击包大纲。
单击“新建文件”。
为文件命名,例如 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 将针对用户名为 "" 和密码为 "" 的情况重新执行。