我有一个使用行为进行行为测试的python Web应用程序。我有5个* .feature文件,在本地和我们的Jenkins构建服务器上运行它们时,每个文件都需要花费几分钟才能运行。我想并行运行这五个文件,而不是顺序运行,以节省时间。我可以在本地执行此操作,但不能在构建服务器上执行此操作。详细信息如下:
在Windows上本地运行:
behave.exe --include "file_01.feature"
behave.exe --include "file_02.feature"
behave.exe --include "file_03.feature"
behave.exe --include "file_04.feature"
behave.exe --include "file_05.feature"
构建服务器在Linux上运行:
当我尝试使用类似的命令运行所有五个文件时,某些行为情况会给我错误。错误是这三个错误之一:
每次测试运行时,抛出这些错误的行为场景似乎都会改变。
我怀疑正在运行的行为测试中的chrome驱动程序之间存在一些共享资源,但是我不确定。我无法解释为什么这在本地对我有效,但不适用于我的构建服务器。我也无法解释为什么3个文件有效,但5个无效。
有人试图同时运行多个行为测试时看到过这样的错误吗?还是您知道我应该寻找什么?我的项目足够大,很难将我的问题的最小示例放在一起。这就是为什么我没有发布任何代码的原因。我只是想知道我应该寻找什么,因为我很茫然。
答案 0 :(得分:0)
这就是我并行运行多个功能的方式。
from behave.__main__ import main as behave_main
@step(u'run in parallel "{feature}" "{scenario}"')
def step_impl(context, feature, scenario):
t = threading.Thread(
name='run test parallel',
target=parallel_executor,
args=[context, feature, scenario])
#args=[context, 'parallel_actions.feature', 'Make Cab-Cab communication'])
t.start()
def parallel_executor(context, feature_name, scenario):
os.chdir(testenv.PARALLEACTIONS_PATH)
behave_main('-i "{}" -n "{}" --no-capture --no-skipped'.format(feature_name, scenario))
功能
Feature: testing parallel
Scenario: parallel run
When run in parallel "parallel_actions-1.feature" "Make Cab-Cab communication"
And run in parallel "parallel_actions-1.feature" "Another Scenario"
And run in parallel "another_parallel.feature" "Another Scenario 2"
我只是创建一个新线程并直接调用行为执行器,所以您不需要分别调用行为.exe进程5次,而只需一次。所有功能都可以并行执行。
我无法回答您的消息错误,但是您可以尝试另一种方法(更多行为方式)以并行方式运行行为功能。