问题标签 [pytest-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 投票
0 回答
737 浏览

dependencies - 我可以使用测试依赖项来调节 pytest-xdist 并行执行吗?

我正在发现pytest-xdist与依赖相关插件的某种组合,如pytest-dependency(但它似乎有一些不兼容,最好说,它们不相处),或者 pytest-ordering有同样的问题.

我需要的是并行运行,但注入一些约束以保证与常见任务相关的一些测试(主要是为特定测试提供数据库)在“并行化”组的其余测试之前隔离执行。例如,我想像这样组织我的测试:

这个想法是根据与依赖项相关的约束来运行并行化,因此,例如,当输入 收集的测试的全局列表时test_suite1,pytest-xdist 应该停止test_provision.py串行运行它,然后并行运行章节等等。某些章节也可能有约束(即第 2 章 test_provision.py),这也应得到尊重:首先提供,然后第 2 章子测试......在示例chapter2 / test_provision.py中与测试在同一目录中,这与文件系统层次结构无关(尽管这可能是一个项目协议,并且可能应该是统一的:例如,在父目录或类似的东西上隔离的配置测试)。因此,我希望插入 pytest 标记或类似标记以在测试定义中创建依赖项,而不是在文件系统中。

如果这个想法难以实现,也许可以将一个简化标记为在达到时唯一执行的测试停止对所有收集的测试进行 pytest-xdist并行执行),然后,尽管其他人确实可以与之并行化,但我们可以牺牲这一点以获得更大的好处,即避免测试计划中的冲突(从而避免执行失败)。但这意味着更长的总执行时间,我宁愿避免这种解决方案

另外,我不想在开始时运行每个配置测试(例如pytest -m 'provisions' ; pytest -m 'others'),因为有些配置是上层配置的专业化,与其他分支配置兄弟不兼容。因此,从pytest-xdist的角度来看,每个测试在达到时都应按照设计的方式进行。

编辑:我的担忧可以理解为对特定pytest-xdist工作人员建立某种测试亲和力的要求。这是因为如果我确保某些目录由单个工作人员管理,我可以控制整个画面。

0 投票
0 回答
282 浏览

pytest - Pytest 在同时使用 json-report 和 xdist 插件时崩溃

我有一个问题pytest-json-reportpytest-xdist插件一起工作。基本上,从这两个单独开始时测试运行顺利,所以从功能的角度来看,似乎没有问题。

仅当两者都启用时才会出现问题。在初始化节点(运行)后,我得到了这个-n 2

很难找到麻烦制造者,因为堆栈跟踪不完整。

我尝试了几件事来摆脱它:

  1. 颠簸xdist版本(上下)
  2. 与 json-report 版本相同
  3. 碰撞 pytest 本身 - 也向上和向下
  4. 清除我覆盖的所有自定义钩子(所以基本上插件作为它们的默认值工作)
  5. 通过 cmd 行开关或将其放入调用 json-reportpytest_configure
  6. 在 python 3.8.x 上运行
  7. 在不同的操作系统上运行。

我的问题是:

  1. 有没有人有类似的问题?
  2. 如何调试它以获得问题的明确根本原因

当然,我将不胜感激如何解决这个问题的其他建议和想法。

0 投票
0 回答
248 浏览

pytest - 具有并行执行的 Pytest 实时日志记录 - 可能吗?

我有一个运行的测试套件

在构建服务器上。如果测试卡住或由于某种原因变慢(测试使用外部资源),实时日志对于排除故障很有用。

为了加快速度,可以使用例如运行它们

有四个并行的测试运行器。加速几乎与进程数量呈线性关系,这很好,但不幸的是父进程吞下了所有实时日志。如果测试失败,我会获取捕获的日志,但我还需要实时日志来了解实时发生的事情。我知道所有四个并行运行的输出将混合在一起,这很好。目的是让提交者只检查构建服务器的输出并大致了解发生了什么。

我目前正在使用 pytest-xdist,但没有使用它的任何更高级的功能(只是多处理)。

0 投票
1 回答
157 浏览

python - 使用 Pytest,我找不到同时运行 2 个测试类的方法,而每个类都有多个测试?

我正在使用 Pytest,并具有以下测试结构:

类A.py

---------------test_a

---------------test_b

---------------test_c

并且

B类.py

---------------test_d

---------------test_e

---------------test_f

我正在通过终端命令运行我的测试(即:pytest -v -s ClassA.py)

我的问题:有没有办法并行运行 ClassA 和 ClassB(你可能会说 2 个实例),同时保持每个类的顺序 - 分别?这意味着我希望 ClassA 的所有测试都将在第一个浏览器实例上运行,而 ClassB 的所有测试都将在不同的实例上运行。

我也熟悉使用“pytest-xdist”插件执行并行测试。但是一旦使用它,ClassA 和 ClassB 中的测试用例就会以混合顺序执行,所以这对我不利。

已编辑: 我的主要目的是避免在 test_b 的单独浏览器实例上运行 test_a。我希望每个类的测试在同一个浏览器实例上运行

0 投票
0 回答
260 浏览

python-3.x - 并行运行测试时仅运行一次 pytest 夹具

当测试通过 shell 脚本并行运行时,我在 conftest 文件中仅运行一次 pytest 夹具时遇到了一些真正的困难。shell脚本的内容如下:

pytest 夹具在运行测试之前为手机测试创建资源:

当每个单独运行时,它都能完美运行。创建资源,运行测试并最终删除它创建的资源。当并行运行(使用 shell 脚本)时,两者都尝试同时运行 create_resources 固定装置。

有谁知道我可以只运行一次 create_resource 夹具的方法吗?如果是这样,那么第二个设备是否有可能等到所有设备运行测试之前创建资源?

0 投票
0 回答
208 浏览

python - (Pytest-Xdist) ModuleNotFoundError: No module named 'execnet.rsync'

我一直在尝试将编写的测试捆绑pytest.exe文件。

我已经尝试了 pytest 文档中提到的包含第三方插件的代码: https ://docs.pytest.org/en/latest/example/simple.html#freezing-pytest

我的代码如下:

有趣的是,该代码适用于 pytest_rerunfailures 但是当我使用 .exe 运行时-n 2,它显示以下错误:

mainfileexe文件的名称。

此外,值得一提的是,xdist当测试正常运行时命令行选项有效,但当捆绑为 时exe,会产生此问题。

ModuleNotFoundError: No module named 'execnet.rsync'

有人可以帮我吗?

0 投票
1 回答
832 浏览

python - 会话范围内的夹具和异步的 pytest 问题

我有多个测试文件,每个文件都有一个如下所示的异步夹具:

我正在使用 xdist 进行并行化。另外我有这个装饰器:

我有一个函数使用它:

现在f正在从多个测试文件中调用,我收到一个异常,告诉我我不能使用来自不同事件循环的信号量。

我尝试转移到会话级事件循环装置:

但这只是给了我:

ScopeMismatch:您尝试使用“模块”范围的请求对象访问“功能”范围的夹具“事件循环”,涉及工厂

甚至可以让 xdist + async fixture + semaphore 一起工作吗?

0 投票
0 回答
219 浏览

python - Pytest with xdist not printing logs for all tests

I wrote a port scanner test using pytest. It receives a json file with a list of ip addresses and then runs the test for each ip address using parametrize. A log file is created with custom log messages using the Python logging module. I can also significantly reduce the runtime by using pytest-xdist for parallel execution.

The problem is that when running the tests using pytest-xdist, only one test gets logged to the log file while the CLI output is exactly as expected. For example if the test runs 4 times for 4 different ip addresses then only the results of one of those runs is recorded to the log file. The test that does get logged seems to be random and changes from run to run. What is the correct way to log to an external file when executing tests in parallel?

0 投票
1 回答
981 浏览

python-3.x - 尝试使用 ssh 在远程 Windows 主机上运行测试时出现 Pytest x-dist INTERNALERROR

我有带有环境的 Ubuntu 主机:Python 3.6.9、pytest-4.6.9、execnet 1.7.1、x-dist 1.31.0

和 Windows 主机:Windows 版本 10.0.19041.508、python 3.7.5、pytest 5.4.1、execnet 1.7.1

我想在 Ubuntu 上使用 x-dist 插件在 Windows 主机上运行测试: pytest -v -d --tx ssh=admin@10.15.20.15 --rsyncdir /etc/ansible/autotests/release C:\users\Public\ test_create_session.py

我收到错误:

当我在其他 Windows 主机上运行相同的测试时,一切正常,没有错误。我认为这个 Windows 主机的响应带有一些意想不到的东西,但我无法理解是什么问题。有谁能够帮助我?

0 投票
0 回答
320 浏览

pytest - pytest-parallel 不尊重模块范围的固定装置

假设我在文件中编写了以下测试用例test_something.py

当我使用以下命令运行上述pytest命令时,它们可以正常工作。

但是,我想以并行方式运行这些测试用例。我知道,test_1应该test_2并行运行。所以我查看了 pytest-parallel 并执行了以下操作:

但是如上面的代码所示,当它去创建/a/b/bin文件夹时,它会抛出一个错误,说该目录已经存在。所以这意味着模块范围在 pytest-parallel 中没有得到尊重。它正在尝试get_some_binary_file为每个参数化输入执行test_1我有没有办法做到这一点?

我还使用该--dist loadscope选项查看了 pytest-xdist,并为其运行了以下命令:

但这给了我一个如下所示的输出,其中test_1test_2都在同一个工人上执行。

从上面的输出可以看出,test_2gw1 正在运行。为什么?它不应该在不同的工人中运行吗?