Pytest не распознает параметр -n после установки pytest-xdist

Я установил pytest-xdist поверх рабочей среды pytest:

pip install pytest-xdist

и я получил этот вывод

Downloading/unpacking pytest-xdist
  Downloading pytest-xdist-1.10.tar.gz
  Running setup.py egg_info for package pytest-xdist

    no previously-included directories found matching '.hg'
Downloading/unpacking execnet>=1.1 (from pytest-xdist)
  Downloading execnet-1.2.0.tar.gz (163kB): 163kB downloaded
  Running setup.py egg_info for package execnet

    warning: no files found matching 'conftest.py'
Requirement already satisfied (use --upgrade to upgrade): pytest>=2.4.2 in /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages (from pytest-xdist)
Requirement already satisfied (use --upgrade to upgrade): py>=1.4.20 in /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages (from pytest>=2.4.2->pytest-xdist)
Installing collected packages: pytest-xdist, execnet
  Running setup.py install for pytest-xdist

    no previously-included directories found matching '.hg'
  Running setup.py install for execnet

    warning: no files found matching 'conftest.py'
Successfully installed pytest-xdist execnet
Cleaning up...

в этот момент я попытался запустить мой набор тестов параллельно

py.test -n 4

но я получил этот вывод вместо

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

Вывод 'py.test --version is'

This is pytest version 2.6.2, imported from /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages/pytest.pyc
setuptools registered plugins:
  pytest-capturelog-0.7 at /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages/pytest_capturelog.pyc
  pytest-contextfixture-0.1.1 at /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages/pytest_contextfixture.pyc
  pytest-cov-1.7.0 at /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages/pytest_cov.pyc
  pytest-django-2.6.2 at /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages/pytest_django/plugin.pyc
  pytest-pydev-0.1 at /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages/pytest_pydev.pyc
  pytest-runfailed-0.3 at /Users/sal/Documents/code/Python/VirtualEnv/Spring/lib/python2.7/site-packages/pytest_runfailed.pyc

и pytest-xdist фактически отсутствует.

В чем я был не прав? Благодарю.

4 ответа

Как и пользователь user2412166, у меня user2412166 та же проблема. В отличие от user2412166, решением в моем случае было ослабить права на xdist а также pytest_xdist-1.14.dist-info системные каталоги, установленные pip3,

Некоторая предыстория: для безопасности я запускаю строгий umask в моей системе запрещен любой доступ к other пользователи и доступ для записи group пользователи по умолчанию:

$ umask
027

Хотя это, как правило, хорошо, но иногда это доставляет мне неприятности. Установка python-xdist с помощью pip3 под этим umask:

$ sudo pip3 install pytest-xdist

... привело к pip3 запрещающий доступ на чтение и выполнение не-суперпользователям - лучше бы мне только:

$ ls -l /usr/lib64/python3.4/site-packages/xdist
drwxr-x---   3 root root 4.0K 2016-04-10 01:19 xdist/
$ ls -l /usr/lib64/python3.4/site-packages/pytest_xdist-1.14.dist-info
drwxr-x---   3 root root 4.0K 2016-04-10 01:19 xdist/

В то время как pip3 не ошибся, py.test было (... возможно!) неправильно молчаливым игнорированием, а не явным сообщением об очевидной проблеме с разрешениями при обнаружении плагина.

Это было легко исправить путем рекурсивного предоставления other У пользователей есть права на чтение и выполнение каталогов для затронутых системных каталогов:

$ chmod -R o+rX /usr/lib64/python3.4/site-packages/xdist
$ chmod -R o+rX /usr/lib64/python3.4/site-packages/pytest_xdist-1.14.dist-info

Доказательством является командный пудинг:

$ ls -l /usr/lib64/python3.4/site-packages/xdist
drwxr-xr-x   3 root root 4.0K 2016-04-10 01:19 xdist/
$ ls -l /usr/lib64/python3.4/site-packages/pytest_xdist-1.14.dist-info
drwxr-xr-x   3 root root 4.0K 2016-04-10 01:19 xdist/
$ py.test --version
This is pytest version 2.8.7, imported from /usr/lib64/python3.4/site-packages/pytest.py
setuptools registered plugins:
  pytest-xdist-1.14 at /usr/lib64/python3.4/site-packages/xdist/looponfail.py
  pytest-xdist-1.14 at /usr/lib64/python3.4/site-packages/xdist/plugin.py
  pytest-xdist-1.14 at /usr/lib64/python3.4/site-packages/xdist/boxed.py

Таким образом, неясно стало ясно, багги отлажены, а медленные тесты распараллелены быстро.

У меня такая же проблема. Проблема не с версией. Каким-то образом py.test не может увидеть, где находится xdist. Вот что сработало для меня:

pip install pytest --user
pip install pytest-xdist --user

экспорт PATH=$HOME/.local/bin:$PATH

Пожалуйста, попробуй py.test --version и посмотрите на вывод, который объясняет, откуда что импортируется, включая плагины. Очень вероятно, что не работает py.test что вы думаете, что бежите.

Я столкнулся с этой проблемой и понял, что это из-за очень старого setuptools (версия по умолчанию, которая поставляется на Centos6.7)

pip list | grep setuptools
setuptools (0.6rc11)

Итак, первое обновление setuptools

sudo pip install --upgrade setuptools

Затем переустановите pytest а также pytest-xdist

sudo pip install --upgrade pytest pytest-xdist --force-reinstall

После этого pytest был в состоянии обнаружить xdist плагин.

Другие вопросы по тегам