- Cucumber 教程
- Cucumber - 首页
- Cucumber - 概览
- Cucumber - 环境
- Cucumber - Gherkins
- Cucumber - 特性
- Cucumber - 场景
- Cucumber - 注解
- Cucumber - 场景大纲
- Cucumber - 标签
- Cucumber - 数据表
- Cucumber - 注释
- Cucumber - Hook
- Cucumber - 命令行选项
- Cucumber - JUnit 运行器
- Cucumber - 报告
- Cucumber - 调试
- Cucumber - Java 测试
- Cucumber - Ruby 测试
- Cucumber 有用资源
- Cucumber - 快速指南
- Cucumber - 有用资源
- Cucumber - 讨论
Cucumber - 数据表
在进行自动化测试时,我们可能会遇到各种各样的场景。每个场景都有不同的含义和需求。
从一开始,我们就一直在使用社交网络网站登录功能的例子,其中我们只需要传递两个输入参数。让我们考虑更多可能性。如何处理“新用户注册”功能?通常,在为社交网络网站注册新用户时,输入参数可能是什么?类似于以下内容 -
- 用户名
- 电子邮件地址
- 密码
- 重新输入密码
- 出生日期
- 性别
- 电话号码
特性 - 新用户注册。
验证在传递错误输入后,新用户注册是否不成功。
假设我在一个新用户注册页面上。
当我输入用户名和电子邮件地址作为电子邮件地址,密码为,重新输入密码为,出生日期为,性别为,电话号码为时,用户注册应该不成功。
乍一看有点乱。那么,有没有更好的方法来管理这么一大块输入?答案可以是“数据表”。数据表是一组要为单个标签提供的输入。此标签可以是 GIVEN、WHEN 或 THEN。
让我们借助数据表编写上述场景,它将如下所示 -
假设我在一个新用户注册页面上
当我输入有效数据到页面上
| Fields | Values | | First Name | Tom | | Last Name | Kenny | | Email Address | someone@someone.com | | Re-enter Email Address | someone@someone.com | | Password | Password1 | | Birthdate | 01 |
那么用户注册应该成功。
示例
让我们自动化一个数据表的示例。
步骤 1 - 创建一个名为“DataTableTest”的 Maven 测试项目。
转到文件 -> 新建 -> 其他 -> Maven -> Maven 项目 -> 下一步。
提供组 ID(组 ID 将在所有项目中唯一标识您的项目)。
提供构件 ID(构件 ID 是不带版本的 jar 的名称。您可以选择任何小写名称)。
点击完成。
打开 pom.xml -
转到 Eclipse 左侧的包资源管理器。
展开 CucumberTest 项目。
找到 pom.xml 文件。
右键单击并选择选项“使用文本编辑器打开”。
添加 Selenium 的依赖项:这将指示 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下创建一个名为dataTable的包
步骤 3 - 创建一个特性文件。
创建一个名为dataTable.feature 的特性文件,放在 dataTable 包中(有关更详细的步骤,请参阅场景大纲部分)。
写入以下文本。
特性 - 数据表
验证在传递错误输入后,新用户注册是否不成功。
场景
假设我在新用户注册页面上
当我输入无效数据到页面上
| Fields | Values | | First Name | Tom | | Last Name | Kenny | | Email Address | someone@someone.com | | Re-enter Email Address | someone@someone.com | | Password | Password1 | | Birthdate | 01 |
那么用户注册应该不成功
保存文件。
步骤 4 - 创建步骤定义文件。
在 dataTable 包中创建名为“dataTable.java”的步骤定义文件(有关更详细的步骤,请参阅场景大纲部分)。
编写以下代码。
package dataTable;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.table.DataTable;
public class stepdefinition {
WebDriver driver = null;
@Given("^I am on new user registration page$")
public void goToFacebook() {
//Intiate web browser instance. driver = new FirefoxDriver();
driver.navigate().to("https://#/");
}
@When("^I enter invalid data on the page$")
public void enterData(DataTable table){
//Initialize data table
List<list> data = table.raw();
System.out.println(data.get(1).get(1));
//Enter data
driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));
driver.findElement(By.name("reg_email_confirmation__")).
sendKeys(data.get(4).get(1));
driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1));
Select dropdownB = new Select(driver.findElement(By.name("birthday_day")));
dropdownB.selectByValue("15");
Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
dropdownM.selectByValue("6");
Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
dropdownY.selectByValue("1990");
driver.findElement(By.className("_58mt")).click();
// Click submit button driver.findElement(By.name("websubmit")).click();
}
@Then("^User registration should be unsuccessful$")
public void User_registration_should_be_unsuccessful() {
if(driver.getCurrentUrl().equalsIgnoreCase("https://#/")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
保存文件。
步骤 5 - 创建一个运行器类文件。
在包中创建名为 runTest.java 的运行器类。
编写以下代码。
package dataTable;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
保存文件。
使用以下选项运行测试
从包资源管理器中选择 runTest.java 文件。
右键单击并选择选项“以...方式运行”。
选择 JUnit 测试。
成功执行后,您可能会观察到以下内容。
Facebook 网站加载。
数据将输入到注册页面。
提交按钮将被点击。
我们将看到主页不会显示,并且控制台上会显示“测试通过”。