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
плагин.