如何使用ruby定义场景大纲的步骤
我有一个注册表,需要用cucumber和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
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
好的场景在标题中说明他们试图验证的行为,然后有与此行为一致的步骤。他们不需要解释应用程序如何实现这种行为。将这些信息放在场景中会使它们变得更长、更难实现,并且更难维护
这种简单场景的一个副作用是步骤定义更简单,更容易编写。这里不需要正则表达式的参数或表解析
您可以在这里看到此方法的一个简单示例()