我想在运行场景大纲示例之前设置一个环境,比如在Rackspace上创建服务器,然后破坏环境,比如删除在Rackspace上创建的服务器,在测试用例完成后,它没有'无论他们成功还是失败。
我曾尝试使用Before和After,但它似乎会在运行示例中的每个测试用例时创建然后销毁服务器,我想要的是为场景大纲示例中的所有案例创建环境,不只是每一个,然后在示例中的所有测试用例完成后删除它。
这是我的代码:
Feature: Radius Authentication
#Creating servers for the test cases below in the env.rb
@wip
Scenario Outline:
When the user authenticates <User> with different <MAC> <NAS-ID> via RADIUS
Then the user <User> should be logged in
Examples:
|User| MAC | NAS-ID |
| b1 |C0FFEE15F001 |testing-0 |
| b2 |C0:FF:EE:15:F0:02|testing-0 |
| b3 |C0-FF-EE-15-F0-03|testing-0 |
| b4 |C0FF.EE15.F004 |testing-0 |
| b5 |C0:FF:EE:15:F0:05| - |
#Deleting servers after the test cases above are done in the env.rb
提前致谢。
答案 0 :(得分:1)
谢谢James,
Global hooks
如果您希望在任何方案运行之前发生一次 - 只需将该代码放在env.rb文件的顶层(或功能/支持目录中的任何其他文件中。使用内核#at_exit进行全局拆解例如:
当Cucumber启动时,我不必使用任何特殊的钩子来运行设置代码。只需将您的一次性启动代码放在env.rb中,Cucumber将在第一次测试之前运行。
http://media.pragprog.com/titles/dhwcr/global.pdf
at_exit do ===> hook to tear it down when Ruby exits
my_heavy_object.undo_it
end
答案 1 :(得分:0)
看起来推荐的方法是使用全局变量(Cucumber docs)。我想你会想要更像rspec&#39; context
这样的东西,这样你就可以为一组场景创建一个环境,但是知识比我更多的人会告诉你这是否可以轻松完成(I&# 39;我不确定黄瓜是否有任何东西可用。)