新彩天欢迎您!
幻海优品

Cucumber - 功能

功能可以定义为项目的独立单元或功能.我们来看一个社交网站的一个非常常见的例子.该产品/项目的功能如何?很少有基本功能可以确定为 :

  • 在社交网站上创建和删除用户.

  • 社交网站的用户登录功能.

  • 在社交网站上分享照片或视频.

  • 发送好友请求.

  • 退出.

到目前为止,很明显,当我们谈论Cucumber时,被测产品的每个独立功能都可以被称为功能.在开始测试之后,最好的做法是,在派生测试脚本之前,我们应该确定要测试的功能.

一个功能通常包含要测试的场景列表那个功能.我们存储功能的文件,有关要测试的功能和方案的说明称为功能文件.我们将在下一章中看到有关要素文件的更多信息.

在Gherkins中表示待测特征的关键字是"特征".建议的最佳做法是在要素文件中的要素标题下写下要素的小描述.这也将满足良好文档的需要.

示例

功能 : 社交网站的登录功能.

如果用户名和密码正确,用户应该可以登录社交网站.

如果用户名和密码不正确,应向用户显示错误消息.

如果用户名和密码正确,用户应导航到主页.

功能文件

编写Cucumber测试的文件称为功能文件.对于每个被测试的功能,建议应该有一个单独的功能文件.功能文件的扩展名必须是".feature".

可以根据需要创建任意数量的功能文件.要拥有一个有组织的结构,每个功能都应该有一个功能文件.

例如 :

Sr.NoFeature功能文件名
1用户登录userLogin.feature
2分享帖子sharePost.feature
3创建帐户createAccount.feature
4删除帐户deleteAccount.feature

用于功能名称,功能文件名的命名约定取决于个人的选择.关于名称,Cucumber没有基本规则.

一个简单的特征文件由以下关键字/部分组成;

  • 功能 : 被测特征的名称.

  • 描述(可选) : 描述受测试的功能.

  • 场景 : 什么是测试场景.

  • 给定 : 测试步骤执行前的先决条件.

  • 何时 : 为了执行下一步而应该匹配的具体条件.

  • 然后 : 如果满足WHEN中提到的条件会发生什么.

示例

功能 : 用户在社交网站上登录.

当用户名和密码正确时,用户应该可以登录社交网站.

当用户名和密码不正确时,用户应显示错误消息.

如果用户名和密码正确,则应将用户导航到主页.

大纲 : 社交网站的登录功能.

给定用户导航到Facebook.当我输入用户名为"< username>"时密码为"< password>".然后,登录应该是不成功的.

| username  | password  || username1 | password1 |


* AND 关键字用于显示两个条件之间的连接. AND 可与任何其他关键字一起使用,例如 GIVEN,WHEN 那么.

没有逻辑详细信息写在特征文件中.

步骤定义

我们已经准备好了我们的功能文件,并定义了测试方案.但是,这不是完成的工作. Cucumber并不真正知道要为特征文件中概述的任何特定方案执行哪一段代码.

这需要一个中间步骤定义文件.步骤定义文件存储要素文件中定义的场景的每个步骤与要执行的函数代码之间的映射.

所以,现在当Cucumber执行上述场景的一个步骤时在特征文件中,它扫描步骤定义文件并确定要调用的函数.

步骤定义文件示例

public void goToFacebook() {    driver = new FirefoxDriver();    driver.navigate().to("https://www.facebook.com/"); } @When "^user logs in using 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(); }


所以对于每个函数,无论你想在每个测试步骤中执行什么代码(即GIVEN/THEN/WHEN),你都可以写它在步骤定义文件中.确保已为每个步骤定义了代码/函数.

此函数可以是Java函数,我们可以使用Java和Selenium命令来自动执行测试步骤.

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除