📅  最后修改于: 2020-12-07 04:50:13             🧑  作者: Mango
方案大纲基本上用表中的值替换了变量/关键字。表中的每一行都被视为一个方案。
让我们继续相同的Facebook登录功能示例。到目前为止,我们已经在执行一种方案:提供正确的用户名后,登录成功。现在,假设我们要检查三种可能的输入类型(用户名,电子邮件地址或电话号码)的登录是否成功。为此,我们将需要编写三种不同的方案,其中每种方案都将随输入类型而变化,登录成功。在这种情况下,方案将如下所示。
场景:
给定用户导航到Facebook
当我输入正确的用户名和密码时
然后登录应该成功
场景:
给定用户导航到Facebook
输入正确的电子邮件地址和密码时
然后登录应该成功
场景:
给定用户导航到Facebook
输入正确的电话号码和密码时
然后登录应该成功
在这里,如果我们仔细观察,对于上述三种情况:语句相同,仅输入参数(用户名/电子邮件地址/电话号码)在更改。这就是场景大纲的重要性。
当我们用场景大纲定义任何场景时,我们可以指定一个测试场景,在它的底部,我们可以提供许多输入。该场景将执行与提供的输入数量一样多的次数。
让我们创建一个场景大纲的示例-
第1步-创建一个名为ScenarioOutlineTest的Maven测试项目
转到文件→新建→其他→Maven→Maven项目→下一步。
提供组ID(组ID将在所有项目中唯一标识您的项目)。
提供工件ID(工件ID是不带版本的jar的名称。您可以选择任何小写的名称)。
单击完成。
打开pom.xml-
转到Eclipse左侧的Package Explorer。
展开项目CucumberTest。
找到pom.xml文件。
右键单击并选择选项,使用“文本编辑器”打开。
添加Selenium的依赖关系-这将指示Maven,哪些Selenium jar文件将从中央存储库下载到本地存储库。
以编辑模式打开pom.xml,在项目标签内创建依赖关系标签(
在依赖关系标签内,创建依赖关系标签(
在依赖项标签中提供以下信息。
org.seleniumhq.selenium
selenium-java
2.47.1
添加对Cucumber-Java的依赖关系:这将指示Maven,哪些Cucumber文件将从中央存储库下载到本地存储库。
再创建一个依赖项标签。
在依赖项标签中提供以下信息。
info.cukes
cucumber-java
1.0.2
test
添加对Cucumber-JUnit的依赖关系:这将指示Maven,哪些Cucumber JUnit文件将从中央存储库下载到本地存储库。
再创建一个依赖项标签。
在依赖项标签中提供以下信息。
info.cukes
cucumber-junit
1.0.2
test
为JUnit添加依赖项-这将指示Maven,哪些JUnit文件将从中央存储库下载到本地存储库。
再创建一个依赖项标签。
在依赖项标签中提供以下信息。
junit
junit
4.10
test
为JUnit添加依赖项-这将指示Maven,哪些JUnit文件将从中央存储库下载到本地存储库。
再创建一个依赖项标签。
在依赖项标签中提供以下信息。
junit
junit
4.10
test
验证二进制文件。
pom.xml成功编辑后,将其保存。
转到项目→清洁-这将需要几分钟。
步骤2-在src / test / java下创建一个名为“ outline”的包
步骤3-创建一个名为“ outline.feature”的功能文件
选择并右键单击程序包轮廓。
点击“新建”文件。
输入文件名,例如“ outline.feature”
在文件中写入以下文本并保存。
功能-方案大纲
方案大纲-社交网站的登录功能。
给定用户导航到Facebook
当我输入用户名作为“ <用户名>”和密码作为“ <密码>”时
然后登录应该失败
示例–
| username | password |
| username1 | password1 |
| username2 | password2 |
注–这里的示例注释描述了场景执行时要提供的输入范围。将针对提供的每个输入执行测试方案。因此,在给定的示例中,测试方案将执行3次。
步骤4-创建步骤定义文件。
选择并右键单击程序包轮廓。
点击“新建”文件。
将文件名命名为stepdefinition.java
在文件中写入以下文本并保存。
package Outline;
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 stepdefinition {
WebDriver driver = null;
@Given("^user navigates to facebook$")
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@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("email")).sendKeys(arg1);
driver.findElement(By.id("pass")).sendKeys(arg2);
driver.findElement(By.id("u_0_v")).click();
}
@Then("^login should be unsuccessful$")
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
}
注-在上面的代码,我们必须定义有两个输入参数的函数:一个用户名和其他将是密码。因此,对于示例标记中提供的每组输入,将执行Set GIVEN,WHEN和THEN。
步骤5-创建亚军类文件。
选择并右键单击程序包轮廓。
点击“新建”文件。
提供文件名,例如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 { }
使用选项运行测试-
从包资源管理器中选择runTest.java文件。
右键单击并选择选项“运行为” 。
选择JUnit测试。
运行此类文件时,您将观察以下内容
Facebook将在新的Firefox Web浏览器实例中打开。
用户名1和密码1将作为输入传递给用户名和密码字段。
单击登录。
将在浏览器上显示有关登录失败的消息。
在控制台中,您将看到“ Test Pass”打印。
步骤结果1至5将针对用户名2和密码2重新执行。
简而言之,当方案不更改而仅数据值被更改时,建议使用方案大纲数据表。