文档章节

第4章Scenario Outline操作实例

henni_719
 henni_719
发布于 2017/04/22 17:26
字数 941
阅读 5
收藏 0


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.将重新执行用户名为“”和密码为“”。


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

        

本文转载自:http://blog.csdn.net/henni_719/article/details/53609423

共有 人打赏支持
henni_719
粉丝 2
博文 466
码字总数 343938
作品 0
信阳
QA/测试工程师
私信 提问
vim格式化工具:Tabularize 使用指南

http://vimcasts.org/episodes/aligning-text-with-tabular-vim/ There are times when you can improve the readability of your code by lining up the elements on neighbouring lines. I......

小小霸王枪
2013/11/13
0
0
cucumber之Scenarios

Data Tables 类似2纬数组参数 Scenario Outline Doc Strings 3引号 Tag 可以给Scenario打若干个标签,然后执行的时候只执行该某个标签的一系列Scenario...

健哥大人
2016/09/01
7
0
如何为 Editor 开发 Eclipse Outline 视图

在基于 Eclipse 插件的应用中,我们时常能够看到 Outline 视图的身影,它是 Eclipse 框架提供的一个内建视图,能够将编辑器 (Editor) 中的内容以结构化大纲或者缩略图的方式展于给用户。例如...

IBMdW
2011/07/19
1K
0
cucumber之Gherkin

Gherkin是书写feature文件的特定语法 接下来我们一一介绍它的组成元素: 首先起手是Feature,全文件唯一是对具体功能的描述,同行书写功能名,下面可以写大段描述性文本。 Feature后边紧跟的...

健哥大人
2016/09/01
30
0
《Kinect体感人机交互开发基础》封面方案设计征集意见

内容简介: Kinect是微软公司推出的最新的基于体感交互的人机交互设备。本书分为3个部分,首先介绍了Kinect的结构和功能以及如何配置相关的开发环境,接着结合实例介绍如何使用Kinect for Wi...

生气的散人
2012/10/26
311
5

没有更多内容

加载失败,请刷新页面

加载更多

想问一下C++里queue要怎么遍历

如题,想知道怎么遍历<queue>对象的元素? 貌似不能遍历。要么全部pop push一遍,要么换个容器呗。 queue是先进后出的数据类型,只能不断读top()然后再pop()掉。故意把遍历操作隐藏掉了,...

shzwork
昨天
2
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
2
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
3
0
【转】go get命令使用socket代理

由于某些不可描述的原因,国内使用go get命令安装某些包的时候会超时导致失败,比如net包、sys包、tools包等。第一种解决办法就是自己从git上下载后添加链接到GOPATH中,比如: 1234...

yiduwangkai
昨天
6
0
从上往下打印出二叉树的每个节点,同层节点从左至右打印。

//第一种做法 public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList <Integer> li=new ArrayList<Integer>(); ArrayList <TreeN......

南桥北木
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部