py.test -n <进程数> => "py.test: 错误: 未识别的参数: -n

5 投票
1 回答
3828 浏览
提问于 2025-04-18 09:38

我正在尝试将django的测试分配到多个进程中,以加快测试的运行速度。

我在一个虚拟环境中使用py.test。

我相关的版本信息是:

$ pip freeze | grep test
django-pytest==0.2.0
django-webtest==1.7.7
pytest==2.5.2
pytest-cov==1.6
pytest-django==2.6.2
pytest-xdist==1.10
scripttest==1.3

当我尝试这个命令时:

$ py.test -n 4

我遇到了这个错误:

usage: py.test [options] [file_or_dir] [file_or_dir] [...]
py.test: error: unrecognized arguments: -n

py.test的traceconfig命令显示:

$ py.test --traceconfig
PLUGIN registered: <_pytest.python.FixtureManager instance at 0x1091fd320>
===================================================== test session starts ======================================================
platform darwin -- Python 2.7.2 -- py-1.4.20 -- pytest-2.5.2 --     /Users/mike/virtualenvs/foodnet/bin/python
using: pytest-2.5.2 pylib-1.4.20
setuptools registered plugins:
pytest-cov-1.6 at /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/pytest_cov.pyc
pytest-django-2.6.2 at /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/pytest_django/plugin.pyc

active plugins:

cacheprovider       : -1
helpconfig          : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/helpconfig.pyc
pytestconfig        : <_pytest.config.Config object at 0x108da9d50>
runner              : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/runner.pyc
unittest            : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/unittest.pyc
xdist               : -1
assertion           : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/assertion/__init__.pyc
pastebin            : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/pastebin.pyc
skipping            : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/skipping.pyc
genscript           : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/genscript.pyc
session             : <Session 'src'>
tmpdir              : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/tmpdir.pyc
capture             : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/capture.pyc
terminalreporter    : <_pytest.terminal.TerminalReporter instance at 0x1091ebcf8>
cache               : -1
4442026896          : <_pytest.config.PytestPluginManager object at 0x108c3f390>
mark                : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/mark.pyc
terminal            : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/terminal.pyc
main                : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/main.pyc
nose                : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/nose.pyc
python              : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/python.pyc
recwarn             : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/recwarn.pyc
funcmanage          : <_pytest.python.FixtureManager instance at 0x1091fd320>
monkeypatch         : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/monkeypatch.pyc
resultlog           : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/resultlog.pyc
cov                 : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/pytest_cov.pyc
capturemanager      : <_pytest.capture.CaptureManager instance at 0x1091ed710>
django              : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/pytest_django/plugin.pyc
pep8                : -1
junitxml            : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/junitxml.pyc
doctest             : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/doctest.pyc
pdb                 : /Users/mike/virtualenvs/foodnet/lib/python2.7/site-packages/_pytest/pdb.pyc

插件:cov, django

我注意到xdist插件旁边有一个-1。这是不是表示这个插件出错了?

py.test --help没有列出xdist的参数。

1 个回答

1

我发现问题出在这里:

-p no:xdist 

是在tox.ini文件的addopts部分。我把它删掉后,xdist就正常工作了。

撰写回答