如果您有一个简单的表单,请输入您的姓名,性别并保存。当您选择Gender下拉列表时,它将列出[Male |女]。
因此,在编写上述测试场景时,典型的方法是分步编写。
Precondition : User Loged in and Form Opened
Steps | Expected Result
------------------------------------------------------------------------
1 : User Enters the name | Entered name should be there
2 : User Clicks on Gender Drop-down | Male and Female should be listed
3 : Users Selects a Gender | Selected Gender should be there
4 : Clicks on Save | Information get saved.
以下是表示这一点的一种方法是Cucumber。
Given User Loged in and Form Opened
When User Enters the name
Then Entered name should be there
When User Clicks on Gender Drop-down
Then Male and Female should be listed
When Users Selects a Gender
Then Selected Gender should be there
When Clicks on Save
Then Information get saved.
现在我们如何才能在黄瓜中代表这一点?正如我所读到的,你不应该在同一个场景中有多个动作。如果为上面的每个步骤添加多个测试用例,则测试用例将呈指数级增长。处理这个问题的最佳方法是什么?
答案 0 :(得分:1)
我的方法是考虑在Gherkin中记录(使用BDD的原则) - 应用程序行为 而不是 测试用例 即可。 实际上,this article提供了一些关于BDD误解的良好背景。
话虽如此,即使您尝试在单个场景中验证上述标准,我建议至少分成2,以使您的验收测试简洁,可读和可维护。
这是我在重新制定时的尝试:
Scenario: Gender Dropdown values
Given a user is logged in
When the user clicks the Gender dropdown
Then Male and Female options are displayed
@EndtoEnd
Scenario Outline: Saving User information
Given a user is logged in
When the user enters a <Name> and selects a <Gender>
And Clicks on Save
Then the information gets saved
Examples:
|Name|Gender|
|Keith|Male|
|Jenn|Female|
||Female| # Negative
|Rob|| # Negative
此外,您还可以考虑投入一些负面的测试场景。
答案 1 :(得分:0)
如果您需要对包含多个数据的黄瓜进行测试,您可以继续使用scenario outline
功能,在场景后的示例中加载数据。
Scenario Outline: User enters details and stores
Given User Loged in and Form Opened
When User Enters the <Name>
And Users Enters the <Gender>
And Clicks on Save
Then Information get saved.
Then I Go back (In case view info)
Then I assert for <Name>
Then I assert for <Gender>
Examples:
|Name| |Gender|
|x| |Male|
|y| |female|
答案 2 :(得分:0)
黄瓜不是要测试你如何做事,而是要说明你做事的原因。这个场景是关于用户如何与表单进行交互,所有这些都是关于点击它并输入,这些都没有在场景中有任何地方。
你的情景和问题甚至没有告诉我们你要做什么,所以我只需要做些什么。假设您正在尝试添加朋友
Feature: Adding a friend
Scenario: Add Alison
Given I am logged in
When I add Alison to my friends
Then I should see Alison is my friend
那就是那个。请注意,在场景中没有捕获有关如何添加朋友的详细信息,这不是Cucumber的用途。
现在在技术方面让我们探讨如何让这个场景真正添加好友。首先是步骤定义
When 'I add Alison to my friends' do
add_a_friend name: 'Alison' # perhaps add a gender param here
end
请注意,即使步骤定义也不知道如何填写表单。
最后一个辅助方法来实际完成工作(在Ruby中完成它更清晰)
module FriendStepHelper
def add_a_friend(name:)
# here is where we fill in the form and choose the gender
end
end
World FriendStepHelper # makes add_a_friend visible to step def
从技术上来说,这就是你如何在Cucumber中表达你的问题,为什么你在使用你的场景时做了什么,然后你就按照你的步骤定义所使用的辅助方法来做事。