这是我的情景: 我们有一个使用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"的更多信息。使用标签和群组,但我无法找到与我的问题相关的任何信息。
有没有办法首先执行一系列测试用例,然后其余的并行执行?
提前致谢。
答案 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分配多个测试套件同时集中在一组特定的测试中似乎更可靠。这就是我要采取的道路......通过代码看起来似乎很臭