问题标签 [xdist]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
19333 浏览

python - 有没有办法控制 pytest-xdist 如何并行运行测试?

我有以下目录布局:

testsuite*.py 模块的格式如下:

我遇到的问题是我想并行执行“测试套件”,即我希望 testsuite1、testsuite2、testsuite3 和 testsuite4 开始并行执行,但测试套件中的各个测试需要串行执行。

当我使用 py.test 中的“xdist”插件并使用“py.test -n 4”启动测试时,py.test 正在收集所有测试并在 4 个工作人员之间随机负载平衡测试。这导致在“testsuitex.py”模块中每次测试时都要执行“setup_class”方法(这违背了我的目的。我希望每个类只执行一次 setup_class 并在之后连续执行测试)。

基本上我希望执行看起来像:

while worker1, worker2, worker3 and worker4 都是并行执行的。

有没有办法在“pytest-xidst”框架中实现这一点?

我能想到的唯一选择是启动不同的进程以在 runner.py 中单独执行每个测试套件:

0 投票
1 回答
7952 浏览

python - 拥有全局固定装置时,如何将 Python 单元测试转换为 py.test?

我确实有一组使用 Python 的unittest模块编写的单元测试。他们正在使用 setUpModule() 函数来加载一个全局变量,其中包含运行测试所需的共享“东西”(包括一些 HTTP 会话)。

使用 运行我的测试时unittest,它们运行良好。py.test他们失败了。

我对其进行了一些修补,以使其使用旧的pytest夹具功能(碰巧与unittest的名称不同)运行。它有效,但仅在未在多个线程上执行时才有效,这是我确实想使用的功能。

在我的情况下,文档示例毫无用处,因为我确实有 20 个类(unittest.TestCase),每个类中有 10 个测试。显然我不想为每个测试添加一个新参数。

到目前为止,我使用类 setUp() 方法在self中加载共享字典,并在每个测试中从那里使用它。

现在测试:

请记住,我需要一个可以与多个线程一起工作的解决方案,一次调用夹具。

0 投票
1 回答
549 浏览

python - 如何在运行多线程测试之前使用 python 正确执行全局夹具?

我有一组 200 个单元测试,它们在使用 py.test 在单个线程上执行时运行正常。

我确实有一个正在配置网络服务器的夹具,因此我可以针对它运行测试。

不过,我需要确保在执行所有其他测试之前只运行一次,如果失败,则必须停止整个过程。如果这成功了,它可以在它想要的任意数量的线程上执行测试。

我怎样才能做到这一点?

0 投票
4 回答
2810 浏览

python - pytest-xdist 安装后 Pytest 无法识别 -n 选项

我已经在工作的 pytest 环境之上安装了 pytest-xdist:

我收到了这个输出

在这一点上,我试图并行运行我的测试套件

但我收到了这个输出

'py.test --version is' 的输出

并且 pytest-xdist 实际上丢失了。

我错了什么?谢谢。

0 投票
2 回答
1490 浏览

python - 带有 xdist 的 py.test 没有执行用随机值参数化的测试

有人注意到 pytest 和 xdist 的以下奇怪行为吗?

当尝试运行使用一些随机选择的值进行参数化的测试时,测试实际上并没有运行。如果不使用 xdist,则执行相同的测试没有任何问题。

以下代码可用于重现这一点。

没有 xdists 它工作正常。

使用 xdist 根本不执行任何测试,输出如下

我正在使用的版本:

  • 蟒蛇2.7.3
  • pytest 2.6.2
  • pytest-xdist 1.11

附加说明:

对于一些旧版本(xdist 1.8 和 pytest 2.4.X 或 2.5.X 不记得确切),xdist 在 dsession.py 中停止断言

提前感谢任何帮助如何解决它或至少解决它:)

0 投票
2 回答
803 浏览

python - 带有 xdist 的 py.test 跳过所有带有 -n > 1 的测试

我的测试需要 2 分钟才能运行:

…所以我想我会尝试使用xdist插件并行运行它们。所以我做了:

2 秒将是一个了不起的加速......虽然我有点认为没有运行测试 - 会出现一些点,不是吗?但是,如果我只使用一个进程“并行”运行……</p>

……然后时间恢复正常。

如何使xdist插件实际运行测试?

更新:

布鲁诺奥利维拉问题的答案:

0 投票
2 回答
3018 浏览

python - 为什么 pytest + xdist 不捕获输出?

我正在使用 pytest 和 pytest-xdist 进行并行测试运行。在运行测试时,它似乎不-s支持将标准输出传递到终端的选项。有没有办法做到这一点?我意识到这可能会导致来自不同进程的输出在终端中混乱,但我可以接受。

0 投票
1 回答
788 浏览

pytest - 试图了解参数化测试的 pytest-xdist 失败

我有一些使用 conftest 中定义的夹具的参数化测试。使用 pytest-xdist 但使用标准 pytest 通过时,我的测试失败。夹具创建了一个目录,然后由测试使用,我得到了 IOErrors。

从输出中,看起来两个失败的参数化测试要么被收集和/或被多次运行。请注意,在下面的输出中 test_save_load[obj2] 和 test_save_load[obj0] 失败并且它们出现了两次,所以我假设它们正在运行多次。我可以以不同的方式编写测试以不进行参数化;但很想了解这个问题。任何关于正在发生的事情或 pytest-xdist 如何帮助理解问题的想法将不胜感激。

谢谢!

这是我的输出片段:

0 投票
0 回答
235 浏览

python - pytest-xdist 每个从属运行 1 个测试

我的场景包括一个服务器,它在发生某些事件时通知附加的 websocket。websocket 查询参数指定应通知客户端的事件类型。

我有一组用于通知的预定义事件,以及一组已知预期匹配事件的 websocket URL。

我想获得的是:

  1. 启动通知服务(等待事件流)
  2. 对于每个测试,通过 websocket 附加一个客户端
  3. 启动事件流
  4. 流完成后停止通知服务器(关闭 websocket)
  5. 客户端(测试)在 websocket 闭包上检查接收到的事件是否与预期的匹配

这种情况只有在所有测试同时运行时才有效。出于这个原因,我想到使用“-n”来使用 pytest-xdist。

不幸的是,这似乎不起作用。有 8 个测试我得到的是 4 个测试按我的预期立即运行,但最后 4 个测试仅在第一个测试结束时开始。

如果我正确理解了 pytest-xdist 代码(dession.py:366-368),看起来测试在从属之间被划分为每个至少 2 个测试的块。

显然,这会危及我的设置并解释行为。

有人能想出解决这个问题的方法吗?

0 投票
0 回答
366 浏览

python - Wing IDE pytest:如何集成和使用插件(例如xdist)

Wing IDE (Pro) 中的测试工具现在支持 pytest 单元测试框架。

如何集成和使用 pytest 插件,尤其是 xdist?例如,我希望在运行测试时将测试分发到多个 CPU(从 Wing IDE GUI 触发)。

我试过的:

  • 我通过包管理器安装了 pytest 和 xdist
  • 我在文件的第 333 行添加了-n3xdist-specific 参数run_pytest_xml.py) (在我的 Ubuntu 上,这是在/usr/lib/wingide5/src/testing/runners/run_pytest_xml.py

原来的:

改变:

这没有用。当我单击“运行测试”时,我收到错误消息

在 test_delme.py 中运行 test_asdf 时测试进程突然退出

注意:没有第'-n3'333 行,测试工作正常。