如何执行黄瓜测试序列然后并行执行?

时间:2015-08-17 16:17:22

标签: ruby cucumber

这是我的情景: 我们有一个使用ruby和Capybara编写的自动化框架,对于我们使用Cucumber的测试用例,我们创建了一个非常庞大的功能并花了很多时间来执行,所以我们考虑使用并行执行,但这是我们怀疑的地方关于它。

我们有先后条件应该一个接一个地执行,然后执行真实的测试用例,并且可以并行执行,但不能在前置条件场景之前执行。

#Below my Preconditions that have to be executed in sequence
Scenario: Precondition A
  Given I navigate to main site

Scenario: Precondition B
      Given I login to main site

Scenario: Precondition C
      Given I post a message

#Below my Test cases that can be executed in parallel
Scenario: Test 1
      Given I Test font in comment

Scenario: Test 2
      Given I test syntax in comment

Scenario: Test 3
      Given I check for images in comment

(抱歉这个糟糕的例子)

我正在研究有关" parallel_test"的更多信息。使用标签和群组,但我无法找到与我的问题相关的任何信息。

有没有办法首先执行一系列测试用例,然后其余的并行执行?

提前致谢。

2 个答案:

答案 0 :(得分:0)

首先,我建议使用标签将前置条件/​​设置步骤移动到钩子中:

project/features/support/hooks.rb

Before('@with_posted_message') do
  step 'I navigate to main site'
  step 'I login to main site'
  step 'I post a message'
end 

然后您的功能文件project/features/message.feature将如下所示:

@with_posted_message
Feature: Message

  Scenario: Test 1
    Given I Test font in comment

  Scenario: Test 2
    Given I test syntax in comment

  Scenario: Test 3
    Given I check for images in comment

要并行运行黄瓜测试并按场景分组,您需要使用cucumber 1.3.20因为在允许按场景分组的黄瓜2.0功能中broken/changed。因此,您需要还原this change,在本地注释/删除引发语句。

project/Gemfile

source 'https://rubygems.org'

gem 'cucumber', '1.3.20'
gem 'parallel_tests'

恢复到cucumber 1.3.20后,很可能需要执行下一个命令来更新依赖项:

bundle update

project/features/config/cucumber.yml

default: --require features

据说,您希望在3核心上并行运行测试:

bundle exec parallel_cucumber --type cucumber -n 3 features/message.feature --group-by scenarios

您的输出应以此行开头,表示您正在并行运行测试:

3 processes for 3 scenarios, ~ 1 scenarios per process

答案 1 :(得分:0)

很明显,在采取任何额外步骤进行并行测试之前,您需要做的第一件事是不要让测试依赖于彼此......这只是一个让您的测试套件过于复杂化的陷阱和糟糕的做法......

关于并行运行测试,您是否考虑过将这一职责转移到您的CI工具(例如jenkins)?...而不是重用服务器来处理多个测试运行,然后在您的测试套件中对其进行编码,让Jenkins分配多个测试套件同时集中在一组特定的测试中似乎更可靠。这就是我要采取的道路......通过代码看起来似乎很臭