这是我第一次做黄瓜,所以也许我提出的问题并不错,但似乎有更好的方法:
所以现在我正在通过一个类似调查的网站作为我的第一个黄瓜自动化任务。它工作得很好,但像大多数调查他们的很多"然后填写,然后点击下一步"
所以在我的Feature文件中我有很多:
Then I will click 'Next'
哪个与步骤匹配(因为按钮都具有相同的文本):
Then(/^I will click 'Next'$/) do
click_button('Next')
end
所以这个步骤定义在我的功能文件中定义了8-9行......我猜这是好的,但我的功能文件只是看起来......难看?我不习惯Gherkin语言,因为这是我第一次,但它基本上变成了很多:
THEN SELECT THAT THING FROM DROPDOWN
THEN CLICK THIS RADIO BUTTON
THEN SELECT THIS BUTTON
THEN CLICK NEXT
喜欢一遍又一遍....我的意思是它的人性可读,但它看起来很乱?这是正确的吗?
我也不确定何时应该使用" explicits"在我的功能文件中?就像我明确表示我要选择' X' (或" X",不确定是否重要)来自下拉列表?或点击“下一步”'按钮或选择“是”'例如单选按钮?
答案 0 :(得分:2)
你正在编写所谓的命令性步骤,这对于黄瓜/小黄瓜来说确实是错误的方法。
你的步骤应该是说“你在做什么”而不是“你好”。
不知道表单的详细信息,让我们编写一个流程。 第1页。名称 第2页。人口统计学 第3页。最喜欢的足球队 第4页。最喜欢的篮球队 第5页。结果页面显示了他们的团队与其他调查对象的受欢迎程度
Given I enter the "Are you a Bandwagon Fan Survey"
When I enter my name
And I enter my demographics
And I choose a favorite football team
And I choose a favorite basketball team
Then I should be directed to the result page
And I should see my teams ranked on a graph
输入您的姓名并点击下一步的详细信息应隐藏在该stepdef中。试图测试您的应用程序的人并不关心名称是什么,或字段ID是什么或类似的东西。他们只是想知道工作流程。
如果您正在制作使名称页面出错的方案,您只需修改您的小黄瓜就可以说出类似的内容。
When I enter a name too long
Then I see a name too long error message
When I do not enter a name
Then I see a name missing error message
同样,除非对测试场景至关重要,否则您将详细信息保留为过长或错误消息对步骤def(或以下)的影响。我经常设置工厂女孩来处理我的数据,只使用场景文本来提取当前数据。所以我将有一个错误消息工厂,并在其中提供正确值的“name_missing”和“name_too_long”子工厂。如果我需要改变或寻找一些东西,一切都在同一个地方......但最重要的是它并没有使我的小黄瓜混乱。
答案 1 :(得分:1)
是的我认为您要将参数发送到步骤定义
Then I will click 'Next'
步骤定义将是
Then(/^I will click "([^"]*))*"$/) do |text|
click_button(text)
end
以上也适用于
Then I will click 'OK'