Как запустить py.test и linters в `python setup.py test`

У меня есть проект с файлом setup.py . Я использую pytest в качестве основы тестирования, и я также запускаю различные линтеры на свой код ( pep8 , pylint , pydocstyle , pyflakes и т. Д.). Я использую tox для их запуска в нескольких версиях Python, а также для создания документации с использованием Sphinx .

Я хотел бы запускать свои тестовые пакеты, а также линт в исходном коде с помощью python setup.py test задачи python setup.py test . Если я получу это, я тогда просто использую python setup.py test в качестве команды для запуска тестов в моем файле tox.ini .

Поэтому мои вопросы:

  1. Является ли разумной / хорошей практикой делать эти действия с помощью python setup.py test ? Или я должен просто использовать для этого какой-то другой инструмент, например, написать эту команду непосредственно в tox ?
  2. Как получить setup.py для выполнения этих действий в test задаче?

Я знаю, что py.test имеет инструкции по интеграции для setup.py test (здесь: http://pytest.org/latest/goodpractices.html#integrating-with-setuptools-python-setup-py-test-pytest-runner ), но Я ищу более «произвольные команды CLI», так как я хочу запустить несколько инструментов.

2 Solutions collect form web for “Как запустить py.test и linters в `python setup.py test`”

1. Я лично предпочитаю ток для этих задач, потому что

  • он также проверяет правильность установки ваших депов (на всех версиях py)
  • он может протестировать ваш код с несколькими версиями python (virtualenv)

И с вашей настройкой (поскольку вы уже используете ток), я действительно не вижу преимуществ написания python setup.py test вместо точных тестовых команд в вашем tox.ini , потому что он просто добавит еще несколько complexitiy ( новые пользователи / участники должны искать два файла ( tox.ini и setup.py ) для тестов / инструментов вместо одного ( tox.ini ).


2.

Чтобы использовать эту команду, тесты вашего проекта должны быть завернуты в набор тестов unittest с помощью функции, класса или метода TestCase или модуля или пакета, содержащего классы TestCase.

Setuptools # тест

Как сделать setup.py test сделать tox материал

 import sys import os if sys.argv[-1] == 'test': try: import tox except ImportError: raise ImportError('You should install `tox` before run `test`') sys.exit(os.system('tox')) 

Выглядит неплохо, но у вас есть точка. tox.ini использовать tox.ini для настройки среды тестирования и бегунов (как flake8 , coverage и т. Д.) Поскольку tox хорошо подходит для таких вещей.

  • Как добавить данные пакета рекурсивно в Python setup.py?
  • pip не устанавливает entry_points как исполняемые файлы
  • правильный способ найти каталог скриптов из setup.py в Python distutils?
  • Установка с помощью `setup.py develop` не работает - работает pip
  • Python 3: ImportError «Нет модуля с именем Setuptools»
  • Как включить каталог docs в дистрибутив python
  • Обнаружение пути установки пакета python из setup.py
  • Python Точка входа «console_scripts» не найдена
  • Как определить ссылки зависимостей в setup.py, для установки модулей, которых нет в PyPI
  • установить пакет python с помощью setup.py
  • setup.py проверить, существует ли зависимость библиотеки, отличной от python
  • Python - лучший язык программирования в мире.