чем отличаются "python setup.py test" от "pytest {package}"? - PullRequest
0 голосов
/ 18 марта 2020

Я создаю непрерывный рабочий процесс интеграции с помощью действий GitHub. Этот рабочий процесс будет использоваться для запуска модульных тестов и проверки состояния сборки. Рабочий процесс будет использоваться рядом людей, которые разработали пакет python, поэтому я стараюсь сделать его как можно более общим и модульным. Моя цель состоит в том, чтобы разделить задачи запуска модульных тестов и тестирования состояния сборки этих пакетов, что приводит меня к моему вопросу, каковы различия между командами python setup.py test и pytest {package}?

В частности,

  1. Выполняет ли модульные тесты с помощью команды pytest {package} автоматическую сборку вашего пакета или невозможно выполнить модульные тесты без сборки пакета?

  2. Я знаю, что setup.py - это скрипт сборки для setuptools, и я прочитал, что делает команда python setup.py test, и там написано, что она будет: запускать модульные тесты после сборки на месте. Так что, тогда эта команда использует pytest по умолчанию?

Я также видел в документации setuptools команду build, поэтому, чтобы попытаться ответить на мои собственные вопросы, я бы сделал pytest {package} только для запуска модульных тестов и python setup.py build для проверки состояния сборки пакета.

Это правильно?

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Выполняет ли запуск модульных тестов с помощью команды pytest {package} автоматическую сборку вашего пакета?

Нет, это не нужно, и вам это не нужно - вы этого не делаете пакет не нужен для запуска ваших тестов.

Разве нельзя запустить модульные тесты без сборки вашего пакета?

Возможно.

Я знаю, что setup.py - это скрипт сборки для setuptools, и я прочитал, что делает команда python setup.py test, и там написано, что она будет: запускать модульные тесты после сборки на месте. Так использует ли эта команда pytest по умолчанию тогда?

Она запускает сконфигурированные тесты, так что это зависит от ваших настроек. Запуск python setup.py test устарел, как уже упоминалось, поэтому вам обычно не нужно об этом беспокоиться - используйте pytest непосредственно в вашей среде CI. Обратите внимание, что некоторые дистрибутивы Linux по-прежнему запускают это по умолчанию при развертывании, поэтому, если вы хотите распространять свой пакет, вам все равно придется протестировать это.

Для запуска pytest через setup вы, вероятно, нужно что-то подобное в вашем setup.py:

setup(
    packages=find_packages(),
    tests_require=['pytest'],
)
0 голосов
/ 18 марта 2020

Не отвечает о различиях, но ...

Предупреждение: test устарело и будет удалено в следующей версии. Пользователям, которым нужна общая c точка входа в тест независимо от организатора теста, рекомендуется использовать tox .

- setuptools документация на команда "test - Скомпилировать пакет и запустить пакет юнит-тестов"

...