- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想访问一个包含所有帐户凭据的列表,以将它们提供给 pytest-xdist 中的每个单独线程。我该如何实现?据我所知,pytest-dist,对于每个启动的线程,它是一个单独的测试 session ,它们在内存中分别初始化每个 python 模块。我有一个代码片段的例子如下
import sys
import pytest
import threading
import time
lock = threading.Lock()
i = 0
lis = []
lis.append(1)
lis.append(2)
class TestAAA(object):
def test_function1(self, fixture_function_feature1):
global i, lock
with lock:
print "Lock Acquired"
time.sleep(2)
print >> sys.stderr, 'test_: '+str(lis[i])
执行的命令:
pytest -sv -n 2 --count=5
输出:
test_: 1
test_: 1
预期输出:
test_: 1
test_: 2
import pytest
def pytest_configure(config):
if is_master(config):
config.shared_directory = tempdir.mktemp()
def pytest_unconfigure(config):
if is_master(config):
shutil.rmtree(config.shared_directory)
def pytest_configure_node(self, node):
"""xdist hook"""
node.slaveinput['shared_dir'] = node.config.shared_directory
@pytest.fixture
def shared_directory(request):
if is_master(request.config):
return request.config.shared_directory
else:
return request.config.slaveinput['shared_dir']
def is_master(config):
"""True if the code running the given pytest.config object is running in a xdist master
node or not running xdist at all.
"""
return not hasattr(config, 'slaveinput')
def test_shared_dir(shared_directory):
print >> sys.stderr, 'master logs dir: '+str(shared_directory)
使用和不使用 pytest-xdist 运行它们,都给出错误
命令:pytest -sv test_parallel_share.py
输出:
―――――――――――――――――――――――――――――――――――――――――――――― ERROR at setup of test_shared_dir ―――――――――――――――――――――――――――――――――――――――――――――――
request = <SubRequest 'shared_directory' for <Function 'test_shared_dir'>>
@pytest.fixture
def shared_directory(request):
if is_master(request.config):
> return request.config.shared_directory
E AttributeError: 'Config' object has no attribute 'shared_directory'
test_parallel_share.py:21: AttributeError
100% ██████████
Results (0.05s):
1 error
命令:pytest -n 2 -sv test_parallel_share.py
输出:
scheduling tests via LoadScheduling
―――――――――――――――――――――――――――――――――――――――――――――― ERROR at setup of test_shared_dir ―――――――――――――――――――――――――――――――――――――――――――――――
request = <SubRequest 'shared_directory' for <Function 'test_shared_dir'>>
@pytest.fixture
def shared_directory(request):
if is_master(request.config):
return request.config.shared_directory
else:
> return request.config.slaveinput['shared_dir']
E KeyError: 'shared_dir'
test_parallel_share.py:23: KeyError
100% ██████████
Results (0.55s):
1 error
最佳答案
我认为有多种方法可以解决您的问题。 config.option 内容在 master 和 workers 之间共享。一个特殊的钩子(Hook)可以自定义运行时信息...
在 fixtures 中测试 is_master 是没有意义的,接受它的值(value)是为了 xdist 不存在的情况(没有 -n)。当 xdist 运行时,fixtures 不在 master 中运行,只有 hooks。固定装置仅在包裹在 pytest_runteSTLoop 中的正常协议(protocol)内的子进程内执行。
您取消引用的 slave_input 中的自定义键需要在准备从机的钩子(Hook)中从主机设置。查看 pytest-xdist newhooks.py你会在 node.workerinput 中找到类似 home 的东西来设置那个键。看着pytest_configure_node(self, node: WorkerController)
。您应该编写其中的一个并在那里设置 node.workerinput['shared_dir']
,从站将找到您要分发的公共(public)数据。
def pytest_configure_node(self, node: WorkerController):
node.workerinput['shared_dir'] = node.config.option.shared_dir
关于python - 如何使用 pytest-xdist 访问共享资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51485371/
我刚开始结合使用 pytest 和 xdist 来并行运行测试。我的 contest.py 我有一个配置 Hook 来创建一些测试数据目录(带有时间戳)和测试运行所需的文件。在我使用 xdist 之前
我有一个使用 pytest 运行的测试文件 该文件具有参数化测试,还有一个设置,我希望它在任何测试运行之前仅运行一次,在该设置上我执行无法并行完成的操作(写入文本文件)。 设置是这样的 @pytest
第一次在这里发帖,过去 2 天我尝试搜索 xdist 问题的解决方案。当我尝试使用 n=2 或更高的值运行时,有时(我说有时是因为它随机工作)会出现类似 的错误 Different tests wer
我正在使用 Python 引导一个新的 Selenium 项目。来自 Java 世界,我曾经将 Webdriver 实例包装在 ThreadLocal 中。这样,我可以确定当我的测试与 TestNG
在进程开始运行测试之前,我需要在 xdist 创建的每个进程内执行一些设置(例如创建套接字)。我看过hooks由 xdist 提供,但是 pytest_configure_node() 和 pytes
我目前正在从事一个涉及在远程主机 (bash) 上运行的测试的项目。不幸的是,远程 python 解释器不尊重可用的站点包(它是一个嵌入式包:abaqus python (2.6))。但是,使用 PY
我想访问一个包含所有帐户凭据的列表,以将它们提供给 pytest-xdist 中的每个单独线程。我该如何实现?据我所知,pytest-dist,对于每个启动的线程,它是一个单独的测试 session
我想为 pytest-xdist 产生的每个子进程/网关创建一个单独的日志文件。是否有一种优雅的方法可以找出 pytest 当前所在的子进程/网关?我正在使用位于 conftest.py 的 sess
我正在尝试通过使用 4 个线程的并行执行 (-n=4) 来加速我的 python Django Web 应用程序中的 Selenium 测试 在前 4 次测试中,3 次出现以下错误: [test se
我试图在主节点和工作节点之间共享数据库中的随机条目列表(我对共享资源的定义),并使用 pytest-xdist 并行化测试。我的代码遵循以下结构: ## in conftest.py def get_
当我的测试运行器启动时,我想设置一些东西(调整 sys.path,添加一些环境变量,启动一些全局装置)。我可以使用什么钩子(Hook)在生成的每个 xdist 进程中进行这些更改? 我试过重载几个普通
我将 pytest 与 pytest-xdist 一起用于并行测试运行。它似乎不支持在测试运行时将标准输出传递到终端的 -s 选项。有什么办法可以做到这一点?我意识到这可能会导致不同进程的输出在终端中
我有以下目录布局: runner.py lib/ tests/ testsuite1/ testsuite1.py testsuite2/
我正在从 nose 移植一个 ~2000 方法测试套件至 pytest因为 django-nose没有很好地支持并行化。将 Nose 换成 pytest 似乎工作得很好,并且在添加 python_fi
想象一下,我有可以安全并行运行的 test/unit/... 和尚不能并行运行的 test/function/... . 有没有一种简单的方法可以说服 pytest 按顺序运行功能?考虑到我们正在讨论
我有一个简单的测试。 def test_sample(str): print str 并使用 pytest_generate_tests() 例如 def pytest_generate_te
我正在使用日志记录模块打印到标准输出。当我使用 pytest-xdist 运行测试时,很难理解什么消息对应于worker 是否可以将 xdist 网关编号打印到 stdout 中的每一行? 我现在拥有
我有几千个测试要并行运行。测试都是编译后的二进制文件,返回代码为 0 或非零(失败时)。它们的一些未知子集尝试使用相同的资源(文件、端口等)。每个测试都假定它是独立运行的,并且只在资源不可用时报告失败
我正在运行 Astropy tests in parallel使用 python setup.py test --parallel N我的 Macbook 上的选项(4 个真实内核,固态磁盘),它使用
有没有人注意到 pytest 和 xdist 的以下奇怪行为。 当尝试运行使用一些随机选择的值进行参数化的测试时,测试实际上并未运行。如果不使用 xdist,则执行相同的测试没有任何问题。 可以使用以
我是一名优秀的程序员,十分优秀!