黄瓜:如何实现功能目录特定的支持/ hooks.rb功能?

时间:2015-05-08 16:58:34

标签: ruby rspec cucumber

我们正在使用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浏览器实例。

当我通过在此文件夹结构的“自动化”级别单独发出'cucumber'以及执行单个功能文件时执行所有操作时,我需要这两个工作:

    $ cucumber gui/gui1.feature -r features

所以我的问题是关于如何最好地做到这一点。

  1. 我可以/我应该在'Before do'块中的hooks.rb文件中创建某种条件,以根据执行该功能的目录执行不同的操作吗?
  2. 或者我可以/我应该在每个目录'api'和'gui'中创建单独的support / hooks.rb目录/文件吗? (Cucumber有效地识别并有选择地使用多个支持目录吗?)
  3. 谢谢!

2 个答案:

答案 0 :(得分:1)

黄瓜真的不关心目录,只是出于组织目的。我会尽量避免任何基于文件位置的实现。

我会用标记的场景和钩子来实现它。

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

答案 1 :(得分:1)

如果您运行cucumber --help并特别注意-r选项,您会发现可以使用其他方法。其中之一是使用不同的包含文件运行黄瓜的单独实例。配置它的最佳方法是使用profiles.yml。

配置文件

您可以轻松设置gui配置文件以包含hooks / gui.rb和api配置文件以包含hooks / api

如果你需要获得更多的分离,另一种方法是从每个子文件夹中运行黄瓜,例如: automation / api automation / gui,并在这些文件夹中创建一个支持/钩子结构。