问题标签 [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 投票
1 回答
62 浏览

python - Pytest-xdist 不尊重 settings.DATABASES (或者我做错了什么)

我正在尝试使用 pytest-xdist 来运行并行测试。它有效,我看到性能有所提高。

为了进一步改进,我想通过使用 django_db_modify_db_settings_xdist_suffix 为其提供多个数据库

我在我的 conftest.py 中覆盖了这些函数。

由于我有四个工人,我手动创建了四个数据库。然后我使用 conftest 修改 settings.DATABASES 以针对 DBNAME_ 测试 DBNAME

我验证了我的 settings.DATABASES 已经改变并且是正确的。

但是查询仍然会转到旧的 db DBNAME(它不再在我的 settings.DATABASES 中)

可能出了什么问题?

我需要做任何其他改变吗?或者更改 conftest.py 夹具就足够了?

提前感谢您的任何帮助或指导。

编辑:我的 conftest:py 有很多东西。在 django_db_modify_db_settings_xdist_suffix 结束时,如果我记录 settings.DATABASES 它会显示正确和预期的信息。但是查询仍然会转到不同的数据库。conftest.py 在两次运行中都相同(pytest -n4 或 pytest)。由于它依赖于 xdist_suffix 它只修改“-n 4”运行中的 settings.DATABASE 值。我认为在这里很重要的两个相关功能:

0 投票
1 回答
348 浏览

pytest - 如何修复“pytest:错误:无法识别的参数:-n”

嗨,我正在尝试在 azure 管道上并行运行我的测试(pytest-xdist)。到目前为止,测试运行得非常好。突然,pytest 抛出一个奇怪的错误,说“无法识别的参数”。

文件名:integration_test.py 使用的命令:pytest -n 5 --tb=short integration_test.py -v -s --> 并行运行 5 个测试 测试总数:57 个版本:pytest==6.2.5 pytest- xdist==2.3.0 甚至尝试使用这两个模块的最新版本。

错误:错误:用法:pytest [options] [file_or_dir] [file_or_dir] [...] pytest:错误:无法识别的参数:-n integration_test.py

我该如何克服这个错误?

0 投票
1 回答
32 浏览

python - 在 pytest 多处理中写入同一文件

有一个 pytest 测试套件,可以通过pytest-xdist. 其中一些测试写入同一个文件,这在多处理时可能会出现问题。

我认为这样做可以解决问题,但没有成功:

util.py

并在test_something.py

有时测试会挂起,或者有时会出现 WRITE/READ 问题。

我是否将其放置LOCK在不正确的位置?有没有办法在所有测试中传递一个全局对象?还是我想错了?

0 投票
0 回答
64 浏览

python - --cache-clear 用于 pytest xdist

目标:我需要在测试收集之前在 pytest 缓存中设置一些随机值。

问题:如果我使用带有选项 master 的 pytest-xdist 并行运行测试,--cache-clear并且每个工作人员都会清除缓存,所以我需要确保所有工作人员在设置值之前都准备好。

可能的解决方案:

它工作正常。我有 10 秒的睡眠时间,似乎足以启动所有工作人员(节点)。所有工作人员都已启动,所有工作人员都清除缓存。第一个将值设置为缓存,其他人获取它。但我不喜欢这种方法,因为不能保证所有的工人都启动+额外的等待时间。

我考虑其他方法:

  1. 禁用清除工作人员的缓存
  2. 检查所有工作人员是否已启动

但我不知道该怎么做。有任何想法吗?

UPD #1。最小的可重现示例

要求:

代码:

conftest.py

test_clear_cache.py

输出:

注意:如果您在conftest.py测试中取消注释代码将打印相同的名称。

0 投票
0 回答
40 浏览

python - pytest-xdist 因 pytest-cov 错误而崩溃

我试图通过我的主节点的 ssh 在远程机器上对我的包执行测试。两个节点都安装了相同版本的软件包。

我正在运行这样的测试,

在运行此程序时,我收到以下错误,

我已确保在工作节点中安装了覆盖范围。

我不知道为什么它仍然失败。

我还注意到代码文件由于某种原因没有在工作机器中同步。

我试图了解这里出了什么问题以及如何解决这个问题。

0 投票
0 回答
21 浏览

python - pytest_configuration 在使用 pytest-xdist 时运行多次

在我的 conftest.py 中,我有 pytest_configuration 钩子,它在执行测试以配置东西之前运行一些 API。在我使用 pytest-xdist 并行运行测试之前,一切都按预期工作。在这种情况下,我的钩子会根据我选择的节点数执行 n+1 次。

有解决问题的方法吗?我只需要配置执行一次。