Cucumber:如何实现功能目录特定的 support/hooks.rb 功能?
Cucumber: How to implement feature directory specific support/hooks.rb functionality?
我们使用 Cucumber 作为我们的测试工具
我们有这样的文件夹结构:
- automation
- api
- api1.feature
- api2.feature
- gui
- gui1.feature
- gui2.feature
- step_definitions
- api_steps.rb
- gui.steps.rb
- support
- hooks.rb
- cucumber.yml
- env.rb
- Gemfile
- Rakefile
我需要在 hooks.rb 文件(或一般的支持目录)中针对 api 测试和 gui 测试执行不同的操作。对于我的 api 测试,我需要通过我们的 restapi 进行授权并获得一个身份验证 cookie。对于我的 gui 测试,我需要创建一个 selenium 浏览器实例。
当我通过从该文件夹结构的 'automation' 级别单独发出 'cucumber' 来执行所有操作时,以及当我通过以下操作执行单个功能文件时,我都需要它来工作:
$ cucumber gui/gui1.feature -r features
所以我的问题是关于如何最好地做到这一点。
- 我可以 I/should 在 'Before do' 块中的 hooks.rb 文件中创建某种条件,以根据功能从哪个目录执行不同的之前操作吗?
- 或者 I/should 我可以在每个目录 'api' 和 'gui' 中创建单独的 support/hooks.rb directories/files 吗? (Cucumber 会有效地识别并有选择地利用多个支持目录吗?)
谢谢!
Cucumber 确实不关心目录,它们仅用于组织目的。我会尽量避免任何基于文件位置的实现。
我会用标记的场景和挂钩来实现它。
Before('@gui') do
# create browser/login
end
Before('@api') do
# create restapi/auth cookie
end
Before ('~@gui','~@api') do
fail('Silly developer, all scenarios must have an @api or @gui tag!')
end
如果您 运行 cucumber --help
并特别查看 -r
选项,您会发现可以使用其他方法。其中之一是 运行 将黄瓜实例与不同的包含文件分开。配置它的最佳方法是通过 cucumber.yml.
使用配置文件
您可以轻松设置一个 gui 配置文件以包含 hooks/gui.rb 和一个 api 配置文件以包含 hooks/api
如果您需要获得更多分离,另一种方法是 运行 来自每个子文件夹的黄瓜,例如automation/api automation/gui,并在这些文件夹中创建一个 support/hooks 结构。
我们使用 Cucumber 作为我们的测试工具
我们有这样的文件夹结构:
- automation
- api
- api1.feature
- api2.feature
- gui
- gui1.feature
- gui2.feature
- step_definitions
- api_steps.rb
- gui.steps.rb
- support
- hooks.rb
- cucumber.yml
- env.rb
- Gemfile
- Rakefile
我需要在 hooks.rb 文件(或一般的支持目录)中针对 api 测试和 gui 测试执行不同的操作。对于我的 api 测试,我需要通过我们的 restapi 进行授权并获得一个身份验证 cookie。对于我的 gui 测试,我需要创建一个 selenium 浏览器实例。
当我通过从该文件夹结构的 'automation' 级别单独发出 'cucumber' 来执行所有操作时,以及当我通过以下操作执行单个功能文件时,我都需要它来工作:
$ cucumber gui/gui1.feature -r features
所以我的问题是关于如何最好地做到这一点。
- 我可以 I/should 在 'Before do' 块中的 hooks.rb 文件中创建某种条件,以根据功能从哪个目录执行不同的之前操作吗?
- 或者 I/should 我可以在每个目录 'api' 和 'gui' 中创建单独的 support/hooks.rb directories/files 吗? (Cucumber 会有效地识别并有选择地利用多个支持目录吗?)
谢谢!
Cucumber 确实不关心目录,它们仅用于组织目的。我会尽量避免任何基于文件位置的实现。
我会用标记的场景和挂钩来实现它。
Before('@gui') do
# create browser/login
end
Before('@api') do
# create restapi/auth cookie
end
Before ('~@gui','~@api') do
fail('Silly developer, all scenarios must have an @api or @gui tag!')
end
如果您 运行 cucumber --help
并特别查看 -r
选项,您会发现可以使用其他方法。其中之一是 运行 将黄瓜实例与不同的包含文件分开。配置它的最佳方法是通过 cucumber.yml.
您可以轻松设置一个 gui 配置文件以包含 hooks/gui.rb 和一个 api 配置文件以包含 hooks/api
如果您需要获得更多分离,另一种方法是 运行 来自每个子文件夹的黄瓜,例如automation/api automation/gui,并在这些文件夹中创建一个 support/hooks 结构。