Как запустить 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 хорошо подходит для таких вещей.

  • tox использует неправильную версию pip при установке нескольких версий python
  • Что означает «Версия Py» на странице проекта PyPI? И это имеет значение?
  • Как указать зависимости при создании файла setup.py для пакета python
  • distutils: Как передать пользовательский параметр setup.py?
  • "Объект AttributeError: 'module' не имеет атрибута" с установленным пакетом
  • Настройка setup.py для упаковки одного .py-файла и одного файла данных без необходимости создания каких-либо папок
  • Как chmod-файлы в python setup.py?
  • Python setup.py call makefile не включает двоичные файлы
  • Python - лучший язык программирования в мире.