0
点赞
收藏
分享

微信扫一扫

第6章Cucumber的数据表和注释

boomwu 2022-06-20 阅读 51


         在自动化方面,可能面临各种各样的场景。每个场景都有不同的含义和需求。从一开始,就以社交网站的登录功能为例,只需要传递两个输入参数。“新用户注册”功能如何?通常,在为社交网站注册新用户时,可以是输入参数?类似如下:用户名、email、密码、重新输入密码、出生年月、性别、手机号。

         不使用数据表前feature文件的内容是:         

Feature: New user registration.
Verify that the new user registrationis unsuccessful after passing the incorrect inputs. Given I am on a new userregistration page.
When I enter the user name and ane-mail address as email address and password as, and re-enter password as andBirthdate as and Gender as and phone number as then the user registrationshould be unsuccessful.

         乍一看有点凌乱。那么有没有更好的方法来管理这样的输入?答案可以是“数据表”。数据表是为单个标签提供的一组输入。此标记可以是GIVEN,WHEN或THEN。让我们在数据表的帮助下编写上述场景,它将如下所示:        

Feature: New user registration.
Given I am on a new user registration page
When I enter valid data on thepage
| Fields | Values |
| First Name | Tom |
| Last Name | Kenny |
| Email Address |someone@someone.com |
| Re-enter Email Address |someone@someone.com |
| Password | Password1 |
| Birthdate | 01 |
Then the user registration shouldbe successful.

6.1 注册数据表操作实例

         例子以n的注册功能为例子进行讲解说明。

         Step_1:在/src/test/java路径下创建一个DataTableTest包。

         Step_2:在DataTableTest包下创建DataTableTest.feature       


Feature: New user registration
Scenario:
Given I am on a new user registration page
When I enter invalid data on the page
| Fields | Values |
| User Name | Tom |
| Email | someone@someone.com |
| Password | Password1 |
| Re-Enter Password | Password1 |
| validateCode | 12345 |
Then the user registration should be unsuccessful

         Step_3:在DataTableTest包下创建步骤定义文件DataTableTest.java        


package DataTableTest;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.table.DataTable;

public class DataTableTest {
WebDriver driver = null;
@Given("^I am on a new user registration page$")
public void goToCsdn() {
driver = new ChromeDriver();
driver.navigate().to("
}

@When("^I enter invalid data on the page$")
public void enterData(DataTable table) {
//初始化数据表
List<List<String>> data=table.raw();
System.out.println(data.get(1).get(1));
//输入数据
driver.findElement(By.id("username")).sendKeys(data.get(1).get(1));
driver.findElement(By.id("email")).sendKeys(data.get(2).get(1));
driver.findElement(By.id("password")).sendKeys(data.get(3).get(1));
driver.findElement(By.name("confirmpassword")).sendKeys(data.get(4).get(1));
driver.findElement(By.id("validateCode")).sendKeys(data.get(5).get(1));
driver.findElement(By.id("agree")).click();
driver.findElement(By.className("next-step")).click();
}

@Then("^the user registration should be unsuccessful$")
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase)){
System.out.println("Test Pass");
}
else {
System.out.println("Test Failed");
}
driver.close();
}
}

       Step_4:在DataTableTest包下创建runner类文件,runTest.java        


package DataTableTest;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format={"pretty", "html:target/cucumber"})
public class runTest {

}

       Step_5:运行test的选项:进入左侧包浏览,选择runTest.java,右击选择“Run as”,在弹出框选择“JUnit test”。运行结果如下:

        第6章Cucumber的数据表和注释_java

6.2 注释

         注释基本上是一段用于文档目的而不是执行的代码。无论是Step定义文件还是feature文件,注释使其更易于阅读和理解。因此,在文件中的适当位置使用/放置注释很重要。这也有助于调试代码。Cucumber feature文件可以在任何地方有注释。要添加注释,只需要用“”符号开始语句。

         不同的编程语言有不同的规范来定义注释。Cucumber注释:

Ø  Step定义文件:如果您使用Java作为平台,请使用“//”标记注释。

Ø  feature文件:在feature文件的情况下,使用

         如下所示:

        第6章Cucumber的数据表和注释_java_02

         


举报

相关推荐

0 条评论