第6章Cucumber的数据表和注释

来源:互联网 发布:管家婆怎么恢复数据 编辑:程序博客网 时间:2024/06/18 18:38


         在自动化方面,可能面临各种各样的场景。每个场景都有不同的含义和需求。从一开始,就以社交网站的登录功能为例,只需要传递两个输入参数。“新用户注册”功能如何?通常,在为社交网站注册新用户时,可以是输入参数?类似如下:用户名、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 CSDN注册数据表操作实例

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

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

         Step_2:在DataTableTest包下创建DataTableTest.feature       

       Feature: CSDN 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("http://passport.csdn.net/account/register?action=registerView&service=http://www.csdn.net");} @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("http://passport.csdn.net/account/register?action=saveUser&isFrom=false")){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.2 注释

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

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

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

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

         如下所示:

        

         

0 0
原创粉丝点击