2假设我有一个像
这样的场景大纲@Scenario1
Scenario Outline:Scenario one
Given fill up login fields "<email>" and "<password>"
And click the login button
Examples:
| email | password |
| someEmailAddress | SomePassword |
| someEmailAddress2| SomePassword2 |
和
之类的另一个场景@Scenario2
Scenario Outline:Scenario two
Given fill up fields "<value1>" and "<value2>"
Examples:
| value1 | value2 |
| value11 | value21 |
| value12 | value22 |
我如何使用'someEmailAddress'运行登录等场景并填写所有scenario2值,然后使用'someEmailAddress2'登录并执行相同操作。
答案 0 :(得分:3)
黄瓜情景是我们用来描述行为的工具,即正在发生的事情及其重要性。它们不是编程测试的工具。有效使用Cucumber的方法是保持场景简单,让步骤定义调用的代码为您编程。
步骤定义及其调用的方法是用编程语言编写的。这为您提供了处理与系统交互的详细信息所需的全部功能。
编写Cucumber场景的艺术是每个人都要谈论
因此,对于您的方案,我们有
Scenario: Login
Given I am registered
When I login
Then I should be logged in
当我们使这个场景工作时,我们的程序具有我们可以登录的行为。那么我们就可以在其他场景中使用这种行为,例如。
Scenario: See my profile
Given I am logged in
When I view my profile
Then I should see my profile
现在为了完成这项工作,我们可能需要更多的工作,因为这个场景还没有注册用户。我们可以通过多种方式处理这个问题
1)添加另一个,也许在后台
Background:
Given I am registered
Scenario ...
Given I am logged in
2)我们可以在登录步骤中注册,例如
Given "I am logged in" do
@i = register_user
login_as user: @i
end
请注意我们在此步骤中如何调用辅助方法register_user
和login_as
来为我们完成工作。
这是开始使用Cucumber的方法。请注意我的方案没有提到我们如何登录,没有电子邮件,没有密码,没有填写任何内容。要有效地使用Cucumber,您必须将这些细节推送到步骤定义及其调用的辅助方法中。
让你的场景简单,并用它们来描述什么,并解释为什么。使用步骤定义和辅助方法来处理HOW。使用Cucumber时不需要使用Scenario Outlines,你永远不应该嵌套它们。
答案 1 :(得分:0)
黄瓜中不支持嵌套场景轮廓。但你可以用下面的方法来克服它。
Scenario Outline:Scenario one and two
Given fill up login fields "<email>" and "<password>"
And click the login button
And fill up fields "<value1>" and "<value2>"
Examples:
| email | password | value1 | value2 |
| someEmailAddress | SomePassword | value11 | value21 |
| someEmailAddress | SomePassword | value12 | value22 |
| someEmailAddress2| SomePassword2 | value11 | value21 |
| someEmailAddress2| SomePassword2 | value12 | value22 |