【发布时间】:2019-02-21 09:52:13
【问题描述】:
我有一个 python web 应用程序,它使用行为测试。我有 5 个 *.feature 文件,当我在本地和我们的 Jenkins 构建服务器上运行它们时,每个文件都需要几分钟才能运行。我想并行运行这五个文件而不是顺序运行以节省时间。我可以在本地执行此操作,但不能在我的构建服务器上执行此操作。以下是详细信息:
在 Windows 上本地运行:
- 我可以使用以下命令在单独的命令窗口中运行所有 5 个文件:
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"
- 我还可以运行一个 python 脚本,该脚本使用相同的命令衍生出 5 个独立的进程。
- 这两项工作,我都没有问题
构建服务器在 Linux 上运行:
-
当我尝试使用类似的命令运行所有五个文件时,一些行为场景会给我错误。错误是以下三个之一:
- 消息:未知错误:无法从断开连接中确定加载状态:无法接收来自渲染器的消息
- 消息:无法访问 chrome
- 消息:没有这样的会话
引发这些错误的行为场景似乎随着每次测试运行而变化。
- 奇怪的是,如果我将 5 个 *.feature 文件重新排列为 3 个,它可以工作。虽然这不是一个理想的解决方案。我们的应用程序正在增长。随着它的增长,我们将拥有更多功能文件。
我怀疑在运行的行为测试中,chrome 驱动程序之间存在一些共享资源,但我不确定。我无法解释为什么这对我在本地有效,但在我的构建服务器上无效。我也无法解释为什么 3 个文件有效,而 5 个文件无效。
在尝试同时运行多个行为测试时,有没有人看到过这样的错误?或者你知道我应该寻找什么吗?我的项目足够大,很难将我的问题的最小示例放在一起。这就是为什么我没有发布任何代码。我只是想知道我应该寻找什么,因为我不知所措。
【问题讨论】:
标签: linux selenium jenkins selenium-chromedriver python-behave