问题标签 [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.
pytest - 使用 pytest 动态控制测试顺序
我想使用逻辑来控制我的测试的顺序,这将在它们已经运行时动态重新排序它们。
我的用例是这样的:我正在使用 xdist 并行化我的测试,并且每个测试都使用来自公共和有限池的外部资源。一些测试比其他测试使用更多的资源,因此在任何给定时间,当只有一小部分资源可用时,一些测试拥有运行所需的资源,而另一些则没有。
我想优化资源的使用,所以我想根据当前可用的资源动态选择接下来要运行的测试。我会在收集阶段计算一个最佳排序,但我事先不知道每次测试需要多长时间,所以我无法预测哪些资源何时可用。
我还没有找到使用插件实现此行为的方法,因为收集阶段似乎与运行阶段不同,而且除了收集钩子之外,我不知道修改要运行的测试列表的另一种方法。
非常感谢任何建议,无论是实施此方法的方法还是优化资源利用的替代想法。我的替代方法是编写自己的简单化测试运行程序,但我不想放弃 pytest 提供的其他功能。
谢谢!
python - pytest:如何在会话结束时获取所有失败测试的列表?(在使用 xdist 时)
我想要一份在会话结束时未能使用的所有测试的列表。
Pytest 允许您定义一个钩子pytest_sessionfinish(session, exitstatus)
,它在会话结束时调用,我希望在其中拥有该列表。
session
是一个_pytest.main.Session
具有属性items
(type list
) 的实例,但我找不到item
该列表中的 each 是否通过失败。
- 如何在会话结束时检索所有失败测试的列表?
使用插件时如何完成
pytest-xdist
,我想在主进程中获取该列表。使用这个插件, master 中session
甚至没有items
属性:
zsh - 操作系统。zsh 终端中的 pytest-xdist 错误:zsh:未找到匹配项:3*popen
我正在使用 ZSH + iterm 作为命令行工具。当我尝试在多个子进程中使用 xdist 插件运行 pytest 测试时,出现错误:no matches found: 3*popen
执行命令:pytest --tx 3*popen --dist=load
附加信息:
操作系统版本:OSX 10.13.2
测试:3.4.0
终端:Iterm + ZSH
python - 是否可以将 xdist 网关编号打印到标准输出中的每一行?
我正在使用日志记录模块打印到标准输出。当我使用 pytest-xdist 运行测试时,很难理解对应于 worker 的消息是什么
是否可以将 xdist 网关编号打印到标准输出中的每一行?
我现在拥有的日志消息示例:
期望:
或者
python - Pytest setup_method 在 xdist worker_id 夹具之前执行
Pytestsetup_method
在xdist
worker_id
fixture 之前执行是否有可能在开始之前获取worker id setup_method
?
例如我有:
内容conftest.py
:
内容test.py
:
输出是:
python - 在 pytest/xdist 框架中存储全局配置数据
我正在使用 python + pytest + xdist + selenium 网格构建一个测试框架。该框架需要与预先存在的自定义日志系统对话。作为此日志记录过程的一部分,我需要提交 API 调用:设置每个新的测试运行,在这些测试运行中设置测试用例,并将字符串和屏幕截图记录到这些测试用例。
第一步是设置一个新的测试运行,其 API 调用返回(除其他外)一个测试运行 ID。我需要保留此 ID 以供所有测试用例阅读。我想把它放在某个全局变量中,但是用 xdist 运行我的测试会导致框架失去对值的跟踪。
我试过了:
- 使用“全局”类;它在使用 xdist 时忘记了值。
- 在我的 conftest.py 文件中保存一个全局变量;同样的问题,使用 xdist 时值会被丢弃。到处导入我的 conftest 似乎也是错误的。
- 在 conftest 中放置一个“全局”类;一样。
此时,我正在考虑将其写入临时文件,但这似乎很原始,而且我认为我忽略了一个更好的解决方案。跨多个 xdist 线程存储和访问全局数据的最正确、pytest 风格的方法是什么?
python - Pytest xdist 和参数化测试是否正在为每个线程执行设置?
我有一个使用 pytest 运行的测试文件
该文件具有参数化测试以及我希望它在任何测试运行之前仅运行一次的设置,在该设置上我执行无法并行完成的操作(写入文本文件)。
那个设置是这样的
当我没有 -n 参数运行时,一切正常
当我使用 -n 运行时,我会遇到我理解的问题,这是因为两个线程同时进行设置
这是 xdist 的工作方式吗?设置是按线程执行的吗?是否有任何范围可以确保我在每个线程开始运行测试之前设置只执行一次?
python - 为 Python 脚本获取一致的 ID,但每次运行都不同
我需要一个函数来在 Python 脚本中生成/返回唯一 ID,但我需要它来满足一些要求:
- 每次运行都必须不同
- 在单次运行中必须是相同的值,即使:
- 多个班级称其为
- 一次运行中的多个线程(xdist)调用它
- 对它的所有现有引用都超出了范围
- 如果脚本的两个实例同时运行,则每个实例都有自己的 ID。
我查看了 uuid 包,但每次调用方法时它都会返回不同的 ID。如何让 ID 在整个运行过程中保持一致?
python-3.x - 带有附加选项的 Python3 xdist
我想在分布式和子流程测试中使用自定义选项。我有 2 个附加选项 --resources_dir 和 --output_dir。
尝试从以下开始:
python3 -m pytest -vs --junitxml=/tmp/result_alert_test.xml --resources_dir=test/resources --output_dir=/tmp/ -n auto test_*
错误信息:
当我在单个进程中运行测试时,如果没有 xdist (-n auto),它就可以工作。
python3 -m pytest -vs --junitxml=/tmp/result_alert_test.xml --resources_dir=test/resources --output_dir=/tmp/ test_*
如果我从最后一个命令开始。它与单个进程一起工作。没有错误。
pytest - 具有类范围的 pytest-xdist 间接夹具
我有一些复杂而繁重的逻辑来构建测试对象,并且测试运行时间很长。它们是集成测试,我想尝试将它们并行化一点。所以我找到了 pytest-xdist 库。
由于构建测试对象的繁重性质,我在夹具上使用 pytests 间接功能在测试时而不是在收集时构建它们。我用于测试的一些代码可以在下面找到。
我的运行命令目前是pytest run.py -n 4 --dist=loadscope
当我不使用 loadscope 时,所有测试都发送给他们自己的工作人员。我不想这样做,因为我只想构建一次设备对象并将其用于所有相关测试。
当我使用 loadscope 时,所有测试都是针对 gw0 执行的,我没有得到任何并行性。
我想知道是否有任何我遗漏的调整或者这个功能目前没有实现。