3

我刚开始结合使用 pytest 和 xdist 来并行运行测试。我的竞赛.py 我有一个配置挂钩来创建一些测试数据目录(带有时间戳)和我的测试运行所需的文件。在我使用 xdist 之前一切正常。看起来 pytest_configure 是先执行然后再为每个进程再次执行导致:

INTERNALERROR> OSError: [Errno 17] File exists: '/path/to/file'

我最终得到 n+1 个目录(几秒钟后)。有没有办法在分发之前预先配置测试运行?

编辑:我可能在这里找到了解决我的问题的方法。我仍然需要测试它。

4

1 回答 1

4

是的,这解决了我的问题。我从我如何实现它的链接中添加了示例代码。它使用夹具将数据注入到slaveinput仅由主进程写入的 dict 中pytest_configure

def pytest_configure(config):        
    if is_master(config):
        config.shared_directory = os.makedirs('/tests/runs/')  

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')
于 2016-03-27T21:10:15.057 回答