如何执行黄瓜测试串行然后并行?
How to execute cucumber test serial and then in parallel?
好吧,这是我的场景:
我们有一个使用 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" 使用标签和组的更多信息,但找不到与我的问题具体相关的任何信息。
有没有办法先执行一系列测试用例,然后并行执行其余测试用例?
提前致谢。
首先,我建议使用标签将 preconditions/setup 个步骤移动到挂钩中:
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. So you either need to revert this change,或者comment/remove 在本地引发声明。
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
很明显,在对 运行 并行测试采取任何额外步骤之前,您需要做的第一件事就是不要让测试相互依赖...这只是让您的测试套件过于复杂的陷阱,并且糟糕的做法...
关于 运行 并行测试,您是否考虑过将此责任转移到您的 CI 工具(例如 jenkins)?...而不是重复使用服务器来处理多个测试 运行s 然后在你的测试套件中围绕它编码,让 Jenkins 分配多个测试套件同时专注于一组特定的测试似乎更可靠。这就是我要走的路......通过代码来做看起来很臭
好吧,这是我的场景: 我们有一个使用 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" 使用标签和组的更多信息,但找不到与我的问题具体相关的任何信息。
有没有办法先执行一系列测试用例,然后并行执行其余测试用例?
提前致谢。
首先,我建议使用标签将 preconditions/setup 个步骤移动到挂钩中:
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. So you either need to revert this change,或者comment/remove 在本地引发声明。
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
很明显,在对 运行 并行测试采取任何额外步骤之前,您需要做的第一件事就是不要让测试相互依赖...这只是让您的测试套件过于复杂的陷阱,并且糟糕的做法...
关于 运行 并行测试,您是否考虑过将此责任转移到您的 CI 工具(例如 jenkins)?...而不是重复使用服务器来处理多个测试 运行s 然后在你的测试套件中围绕它编码,让 Jenkins 分配多个测试套件同时专注于一组特定的测试似乎更可靠。这就是我要走的路......通过代码来做看起来很臭