Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ruby定义场景大纲的步骤_Ruby_Cucumber - Fatal编程技术网

如何使用ruby定义场景大纲的步骤

如何使用ruby定义场景大纲的步骤,ruby,cucumber,Ruby,Cucumber,我有一个注册表,需要用cucumber和ruby进行测试。 我决定在表中使用不同的值来概述用户场景: Scenario Outline: Log in with valid data Given I am on the Sign up Form When I provide <Email> And I provide Confirm <СEmail> And I provide <Password> And I provide C

我有一个注册表,需要用cucumber和ruby进行测试。 我决定在表中使用不同的值来概述用户场景:

Scenario Outline: Log in with valid data
   Given I am on the Sign up Form
   When I provide <Email>
   And I provide Confirm <СEmail>
   And I provide <Password>
   And I provide Confirm <СPassword>
   And I click on Register button
   Then I registered to the site

Examples:
| Email                | CEmail              | Password | CPassword       |
| vip17041@yopmail.com |vip17041@yopmail.com | 123      | 123             |
| vip17042@yopmail.com |vip17042@yopmail.com |123       | 123             | 
但是,我怎样才能从我的表格中设置电子邮件,而不是硬编码的电子邮件呢


如果您希望将捕获与电子邮件地址合并,请感谢:

When(/^I provide (vip\d+)@yopmail\.com$/) do |email|
     browser.text_field(:name, "Email").set("#{email}@yopmail.com")
end
这会将捕获的文本(“vip”字面上加上任意数量的长度为一个或多个的数值)与字符串“@yopmail.com”连接起来

关于情景大纲工作原理的说明

Scenario Outline将从examples表中获取行,并简单地使用列来创建单独的场景,这些场景使用与列标题匹配的值来代替占位符

例如:

Scenario Outline: A note
 Given I am logged in as <user>
 When I go to the homepage
 Then I should see "Welcome Back, <display_name>"

Examples:
| user           | display_name |
| rick@stley.com | Rick Astley  |
| tammy1992      | Tammy Holmes |
这与编写普通场景没有什么不同,您使用的占位符只是完成您正在编写的步骤

我将如何编写您的场景

Cucumber是一个旨在弥合测试人员、开发人员和管理人员之间对话鸿沟的工具

Scenario Outline: Log in with valid data
   Given I am on the Sign up Form
   When I sign up with the email "<Email>" and password "<Password>"
   Then I should be able to log in as "<Email>" with password "<Password>"

Examples:
| Email                | Password |
| vip17041@yopmail.com | 123      |
| vip17042@yopmail.com | 123      |
场景大纲:使用有效数据登录
考虑到我在报名表上
当我使用电子邮件“”和密码注册时
然后,我应该可以使用密码“”以“”身份登录
示例:
|电子邮件|密码|
| vip17041@yopmail.com | 123      |
| vip17042@yopmail.com | 123      |
我们不必知道流程的每个单独步骤,特性文件显示了测试的意图。
这似乎是在寻找注册新帐户后是否可以登录的问题,为什么不这样写呢?

如果您希望将捕获与电子邮件地址合并:

When(/^I provide (vip\d+)@yopmail\.com$/) do |email|
     browser.text_field(:name, "Email").set("#{email}@yopmail.com")
end
这会将捕获的文本(“vip”字面上加上任意数量的长度为一个或多个的数值)与字符串“@yopmail.com”连接起来

关于情景大纲工作原理的说明

Scenario Outline将从examples表中获取行,并简单地使用列来创建单独的场景,这些场景使用与列标题匹配的值来代替占位符

例如:

Scenario Outline: A note
 Given I am logged in as <user>
 When I go to the homepage
 Then I should see "Welcome Back, <display_name>"

Examples:
| user           | display_name |
| rick@stley.com | Rick Astley  |
| tammy1992      | Tammy Holmes |
这与编写普通场景没有什么不同,您使用的占位符只是完成您正在编写的步骤

我将如何编写您的场景

Cucumber是一个旨在弥合测试人员、开发人员和管理人员之间对话鸿沟的工具

Scenario Outline: Log in with valid data
   Given I am on the Sign up Form
   When I sign up with the email "<Email>" and password "<Password>"
   Then I should be able to log in as "<Email>" with password "<Password>"

Examples:
| Email                | Password |
| vip17041@yopmail.com | 123      |
| vip17042@yopmail.com | 123      |
场景大纲:使用有效数据登录
考虑到我在报名表上
当我使用电子邮件“”和密码注册时
然后,我应该可以使用密码“”以“”身份登录
示例:
|电子邮件|密码|
| vip17041@yopmail.com | 123      |
| vip17042@yopmail.com | 123      |
我们不必知道流程的每个单独步骤,特性文件显示了测试的意图。
这似乎是在寻找注册新帐户后是否可以登录的问题,所以为什么不这样写呢?

作为使用Cucumber多年的用户,我建议您避免使用场景大纲。特性和场景用于以简单明了的术语表达意图,而不是使用表进行编程

您可以将场景编写为

Scenario: I should be welcomed when I sign in
  Given I am registered
  When I sign in
  Then I should be welcomed
好的场景在标题中说明他们试图验证的行为,然后有与此行为一致的步骤。他们不需要解释应用程序如何实现这种行为。将这些信息放在场景中会使它们变得更长、更难实现,并且更难维护

这种简单场景的一个副作用是步骤定义更简单,更容易编写。这里不需要正则表达式的参数或表解析


您可以在这里看到这种方法的一个简单示例(),

作为使用Cucumber多年的人,我建议您避免使用场景大纲。特性和场景用于以简单明了的术语表达意图,而不是使用表进行编程

您可以将场景编写为

Scenario: I should be welcomed when I sign in
  Given I am registered
  When I sign in
  Then I should be welcomed
好的场景在标题中说明他们试图验证的行为,然后有与此行为一致的步骤。他们不需要解释应用程序如何实现这种行为。将这些信息放在场景中会使它们变得更长、更难实现,并且更难维护

这种简单场景的一个副作用是步骤定义更简单,更容易编写。这里不需要正则表达式的参数或表解析

您可以在这里看到此方法的一个简单示例()