第4章Scenario Outline操作实例

来源:互联网 发布:快走丝编程 编辑:程序博客网 时间:2024/05/21 16:23


4.1 Scenario Outline简介

         Scenario Outline基本上用表中的值替换变量/关键字。表中的每一行都被认为是一个场景

         继续使用Facebook登录功能的例子。到目前为止,一直在执行一个场景:提供正确的用户名,登录成功。现在,假设我们要检查所有三种可能的输入类型的登录是否成功,这三种类型的输入是用户名,电子邮件地址或电话号码。为了实现这一点,将需要写三个不同的场景,其中每个场景将随输入类型而变化,登录成功。在这种情况下,情况将如下所示。       

         Scenario:         Given user navigates to Facebook         When I enter correct username and password         Then login should be successful          Scenario:         Given user navigates to Facebook         When I enter correct email address and password         Then login should be successful          Scenario:         Given user navigates to Facebook         When I enter correct phone number and password         Then login should be successful

         在这里,如果仔细看,对于上述三种情况:语句是相同的,只有输入参数(用户名/电子邮件地址/电话号码)正在改变。这就是Scenario Outline的重要性。当用Scenario Outline定义任何场景时,可以指定一个测试场景,在它的底部,提供一些输入。场景将执行与提供的输入数一样多的次数

4.2 Scenario Outline操作实例

         继续使用之前创建好的Cucumber环境。

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

           

         Step_2:创建feature文件:outline.feature。创建步骤,右击outline包,选择New file,输入文件名:outline.feature。

             

         Step_3: 打开outline.feature文件,输入如下信息:   

        Feature: Scenario Outline         Scenario Outline: Login functionality for a social networking site.         Given user navigates to CSDN        When I enter Username as "<username>" and Password as "<password>"          Then login should be unsuccessful          Examples:          |username |password |           |username1 |password1 |           |username2 |password2 |

         注意:Examples注释描述了在场景执行时提供的输入范围。将为所提供的每个输入执行测试场景。因此,在给定的Examples中,测试场景将执行三次。

         Step_4:创建step定义文件:outline.java。创建步骤,右击outline包,选择New file,输入文件名:outline.java。

        

         Step_5: 打开outline.java文件,输入如下信息:              

package outline; 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; public class outline { WebDriver driver = null;@Given("^user navigates to CSDN$") public void goToFacebook() { driver = new ChromeDriver(); driver.navigate().to("https://passport.csdn.net/account/login?ref=toolbar"); } @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {driver.findElement(By.id("username")).sendKeys(arg1); driver.findElement(By.id("password")).sendKeys(arg2); driver.findElement(By.className("logging")).click(); } @Then("^login should be unsuccessful$") public void validateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase("http://my.csdn.net/my/mycsdn")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close();} }

         注意:在上面的代码中,必须定义一个具有两个输入参数的函数:一个用户名和另一个用于密码。因此,对于Examples标记中提供的每组输入,将执行GIVEN,WHEN和THEN的设置。

         Step_6:创建runner类文件:runTest.java。创建步骤,右击outline包,选择New file,输入文件名:runTest.java。

          

         Step_7: 打开runTest.java文件,输入如下信息:        

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

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

        

运行此类文件时,将观察以下事项:

1.Csdn在一个新的Chrome Web浏览器实例中打开。

2.username1password1将作为用户名与密码的输入传递。

3.  将单击登录。

4. 在登录失败时,浏览器上将显示信息。

5. 在控制台中,您将看到打印的“测试通过”。

6. 步骤结果1.5.将重新执行用户名为“”和密码为“”。


简而言之,当场景不更改,但只有数据值更改时,建议使用场景大纲数据表。

        

0 0