您可以检查xdist
选项组是否numprocesses
定义了 arg。这表示pytest-xdist
已安装并且将处理该选项。如果不是这种情况,您自己的虚拟 arg 将确保该选项是已知的pytest
(并安全地忽略):
# conftest.py
def pytest_addoption(parser):
argdests = {arg.dest for arg in parser.getgroup('xdist').options}
if 'numprocesses' not in argdests:
parser.getgroup('xdist').addoption(
'--numprocesses', dest='numprocesses', metavar='numprocesses', action='store',
help="placeholder for xdist's numprocesses arg; passed value is ignored if xdist is not installed"
)
现在您可以将选项留在pytest.ini
即使pytest-xdist
未安装;但是,您将需要使用 long 选项:
[pytest]
addopts=--numprocesses=auto
原因是短选项是为pytest
自己保留的,所以上面的代码没有定义或使用它。如果你真的需要短选项,你必须求助于私有方法:
parser.getgroup('xdist')._addoption('-n', '--numprocesses', dest='numprocesses', ...)
现在您可以在配置中使用 short 选项:
[pytest]
addopts=-nauto