我们想测试我们对黄瓜的步骤定义。我们希望能够检查的一件事是,我们预计失败的测试实际上会失败。为此,我们希望编写我们知道会失败的场景,并将它们添加到我们的测试套件中,但标记或以其他方式表示它们,以便当且仅当它们失败时才“通过”。如何解决这个问题?如何期待黄瓜失败的步骤和传递失败?
5
A
回答
0
您应该测试否定状态。一个失败的步骤只是一个传递步骤的逆转。所以做类似的事情:
Then /i should not be true/ do
some_value.should_not be_true
end
这就是我将如何去测试失败。您还可以赶上异常和等,并验证块事实上确实抛出该异常
lambda do
something_that_horks
end.should raise_error(Specific::Error)
你根本扭转你的测试用例的测试,以测试为阴性结果,而不是阳性结果。
-1
您将-w
开关切换到Cucumber命令。
它会输出正常的格式,但最后它会给出一个总结,详细说明所有测试用例是否失败,如果有任何通过它将指定哪些。
0
这是一个非常复杂的例子,但最终结果是一个非常干净的方法,期望黄瓜场景失败。这些只是我正在开发的一个项目中的一小部分组件。创建缺少数据的用户失败的原因是因为我的用户模型中有一些验证器。所有的源代码可以找到here。
功能/ step_definitions/before_step.rb
Before("[email protected]") do
def assert_cucumber(assersion, msg = "an error was thrown")
assert(assersion == true, msg)
end
end
Before("@fails") do
def assert_cucumber(assersion, msg = "an error was thrown")
assert(assersion == false, msg)
end
end
功能/ step_definitions/user_step.rb
Given /^a user with$/ do |params|
params = params.rows_hash
unless User.find_by({username: params[:username]})
assert_cucumber(User.new(params).save, "could not create user")
end
end
功能/ user.feature
Scenario: check if userers exsist
Given a user with
| username | johnsmith |
| email | [email protected] |
| password | password |
Then a user with username "johnsmith"
@fails
Scenario: create user with missing data
Given a user with
| username | johndoe |
Then a user with username "johndoe"
相关问题
- 1. 黄瓜步骤定义失败
- 2. 黄瓜步骤失败的设计,连接拒绝?
- 3. 黄瓜设计登录步骤失败(导轨3.2,黄瓜,水豚,rspec)
- 4. 黄瓜测试双:场景失败,但其步骤通过
- 5. 黄瓜步骤失败嵌套控制器
- 6. 在失败后继续运行黄瓜步骤
- 7. 黄瓜+硒随机失败
- 8. 黄瓜水豚fill_in失败
- 9. 黄瓜方案失败
- 10. 如何使黄瓜场景失败
- 11. 如何强制黄瓜场景失败?
- 12. 如何调试随机黄瓜失败?
- 13. 异步步骤,等待所有步骤成功或失败
- 14. 滑轨+黄瓜+硒:测试失败一起,分别传递
- 15. 黄瓜轨失败的情况下
- 16. SSIS如何在并行步骤失败时失败包?
- 17. 黄瓜 - 如何标记预期失败作为已知问题?
- 18. QtCreator部署步骤失败
- 19. 测试用户注册黄瓜 - 失败
- 20. Arquillian与黄瓜构建失败
- 21. 失败黄瓜测试,使用Rails 3.0.9
- 22. 截图上与Java +黄瓜失败
- 23. 黄瓜自定义设计失败
- 24. 设计注销 - 黄瓜步骤失败,但应用程序运行正常
- 25. 如何使步骤定义文件中的步骤失败,以便在黄瓜 - 水豚环境中自动将情景标记为失败?
- 26. 如何传递参数“ABC”:“12”到黄瓜(Java)的步骤
- 27. Force Octopus部署步骤失败,如果PostDeploy Powershell脚本失败
- 28. 黄瓜和水豚测试失败,我该如何调试?
- 29. 黄瓜步骤上错误的步骤
- 30. AWS EMR步骤失败,因为它创建的作业失败
这里的目的不是为了测试状态不正确,则是在状态不正确时测试测试失败。换句话说,我们正在测试我们的步骤,而不是测试状态。 – kerkeslager 2011-02-03 16:57:35