我有一个包含7个输入字段的表单。
情况是我想测试是否缺少任何字段,系统应该为缺少的字段提示错误。
所以我做了以下功能:
Scenario: Sending request with an empty form
Then I fill in "Phone" with "979000000"
And I fill in "Name" with "John"
And I fill in "Email" with "john@mail.me"
And I fill in "Circumstance" with "Trash outside"
And I fill in "Address" with "700 University Dr. E"
And I fill in "Start Date" with "10/31/2014"
And I fill in "End Date" with "11/01/2014"
When I press "Submit request"
Then I should see prompt for all missing fields
然后逐个删除字段并制作新方案。
这显然不是一个好习惯。有没有什么好方法可以测试所有领域?
答案 0 :(得分:1)
我认为你可以使用Scenario Outline只制作“one”场景
Scenario Outline: Sending request with an uncomplete form
Given/when I am on the form...
When I fill the form with datas :
| name | email | circumstance | address | start | end |
| <name> | <email> | <circumstance> | <address> | <start> | <end> |
When I press "Submit request"
Then I should see prompt for missing field: <missing>
Scenarios:
| name | email | circumstance | address | start | end | missing |
| | john@mail.me | Trash outside | 700 University Dr. E | 10/31/2014 | 11/01/2014 | name |
| john | | Trash outside | 700 University Dr. E | 10/31/2014 | 11/01/2014 | email |
| john | john@mail.me | Trash outside | 700 University Dr. E | 10/31/2014 | | end |
大纲让您的场景播放多次:每个“场景”一行
然后,您需要完成所有非空数据的填充步骤。
When(/^I fill the form with datas :$/) do | table |
datas = table.hashes.first
datas.each do |label, value|
if !value.empty?
@browser.text_field(name: label).set value
end
end
end
然后,您可以添加包含多个空字段的示例,并检查值为“missing”的多个字段。
答案 1 :(得分:1)
黄瓜不是进行详尽测试的工具。
如果要测试模型是否验证每个字段的有效性,请使用单元测试。这样运行起来会更快,更容易实现。
如果您想显示提示您填写空字段的机制正在运行,请仅针对一个字段执行此操作(您知道它适用于其他字段,因为您的单元测试)。
编写类似
的功能Scenario: Incomplete form
When I fill in the form
And I leave a required field empy
Then I should see a missing field prompt
考虑这一点的一种方法是不要浪费时间测试平台代码,而是专注于测试应用程序代码。