我有一份注册表,需要用黄瓜和红宝石进行测试。 我决定在表中使用不同值的Scenario Outline:
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")
但是我怎样才能设置而不是硬编码的电子邮件 - 来自我的桌子的电子邮件?
由于
答案 0 :(得分:0)
如果您希望将捕获与电子邮件地址合并:
When(/^I provide (vip\d+)@yopmail\.com$/) do |email|
browser.text_field(:name, "Email").set("#{email}@yopmail.com")
end
这将使用字符串&#34; @ yopmail.com&#34;
关于情景大纲如何运作的说明
场景大纲将从示例表中获取行,并只使用列创建使用与列标题匹配的值代替占位符的各个场景。
例如:
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 |
将转换为两种情况:
Scenario: A note
Given I am logged in as rick@stley.com
When I go to the homepage
Then I should see "Welcome Back, Rick Astley"
Scenario: A note
Given I am logged in as tammy1992
When I go to the homepage
Then I should see "Welcome Back, 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 |
我们不必知道该过程的每个步骤,并且要素文件显示测试的意图。 这似乎在寻找的是您是否可以在注册新帐户后登录,那么为什么不这样写呢?
答案 1 :(得分:0)
作为使用Cucumber多年的人,我建议您避免使用Scenario Outlines。功能和场景用于以简单明了的术语表达意图,而不是使用表格编程。
您可以将您的方案编写为
if (i % 10 == 9)
好的方案说明了他们在标题中尝试验证的行为,然后采取与此行为一致的步骤。他们无需解释您的应用程序如何实现该行为。将这些信息放在您的方案中会使它们更长,更难实现,并且更难以维护。
这种简单场景的副作用是步骤定义更简单,更容易编写。这里不需要正则表达式的参数或表格解析。
您可以在此处查看此方法的简单示例(https://github.com/diabolo/cuke_up/tree/master/features),