Подтвердить что ты не робот

Должен pytest et al. зайдите в tests_require [] или extras_require {testing []}?

Я пишу программу python, которая использует py.test для тестирования, и теперь один тест также зависит от numpy. Где в моей setup.py следует добавить эти зависимости?

В настоящее время соответствующая часть моего setup.py выглядит примерно так:

[...]
'version': '0.0.1',
'install_requires': [],
'tests_require': ['pytest'],
'cmdclass': {'test': PyTest},
'extras_require': {
    'testing': ['pytest'],
},
[...]

Если pytest дважды чувствует себя несколько странным, и я не уверен, где добавить numpy.

4b9b3361

Ответ 1

В соответствии с документами

tests_require - дополнительные пакеты, которые получаются при использовании setuptools test. Они не установлены в системе.

extras_require - дополнительные дополнительные пакеты, сгруппированные по имени функции. Список пакетов установлен для использования этой функции, и есть несколько способов их установки. См. Помогает ли pip обрабатывать extras_requires из setuptools/распространять источники на основе?

Моя интерпретация

tests_require должны быть пакеты, которые используются в тестах, таких как numpy, а не пакеты, которые используемый для проведения тестирования, например pytest или nose. tests_require необходимо будет переместить или скопировать в функцию тестирования в extras_require при тестировании вне setuptools.

Используйте extras_require, чтобы сделать тестовый пакет, такой как pytest, необязательным. Используйте setup_requires, чтобы потребовать его.

pytest и нос могут быть интегрированы с setuptools, чтобы воспользоваться удобством tests_require, однако могут быть недостатки. нос предупреждает, что плагины могут быть недоступны при запуске setuptools.

См. Интеграция с setuptools/ python setup.py test/pytest-runner и команда nosetests setuptools.

Например

Тестирование с помощью интеграции setuptools:

setup.py

[...]
'version': '0.0.1',
'install_requires': [],
'tests_require': ['numpy'],
'cmdclass': {'test': PyTest},
'extras_require': {
    'testing': ['pytest'],
},
[...]

ш

(env) > python setup.py develop
(env) > easy_install pytest
(env) > python setup.py test -a "--pdb"

Или тестирование без интеграции setuptools:

setup.py

[...]
'version': '0.0.1',
'install_requires': [],
'extras_require': {
    'testing': ['pytest', 'numpy'],
},
[...]

ш

(env) > pip install -e .[testing]
(env) > pytest.py --pdb