Может ли unittest разрешить тестирование одного случая/пакета через "setup.py test"?

Я новичок, когда дело доходит до тестирования модулей python, но я очень хочу учиться! Я просто прочитал python setup.py test может запускать все наборы, полученные из классов unittest. Интересно, могу ли я также использовать setup.py для запуска одного пакета и/или одного тестового примера, возможно, добавив некоторый модификатор к предыдущей команде, например, python setup.py tests suitename. Если да, можете ли вы указать мне какие-либо документы/примеры?

Ответ 1

Бегун setup.py test довольно ограничен; он поддерживает только указание конкретного модуля. Документация для ключей командной строки указывается при использовании переключателя --help:

python setup.py test --help
Common commands: (see '--help-commands' for more)
  [ ... cut ... ]

Options for 'test' command:
  --test-module (-m)  Run 'test_suite' in specified module
  --test-suite (-s)   Test suite to run (e.g. 'some_module.test_suite')

  [ ... more cut ... ]

поэтому python setup.py test -m your.package.tests.test_module ограничит выполнение тестов только из файла test_module.py.

Вся команда test действительно делает это, убедитесь, что ваше яйцо уже построено, извлеките test_suite значение из метаданных setup(), настройте тестовый загрузчик, который понимает о замятых яйцах, затем запустите unittest.main().

Если вам нужно запустить только один тест, вы уже создали свое яйцо, не выполняете это с застегнутым на молнию яйцом, тогда вы также можете просто использовать unittest интерфейс командной строки, который делает практически все остальное:

python -m unittest yourpackage.tests.TestClass.test_method

даст команду unittest запустить только очень специфический метод тестирования.

Ответ 2

Вы, ребята, все неправы, setup.py test можно использовать с опцией -s так же, как python -m unittest делает:

cd root_of_your_package
python setup.py test -s tests.TestClass.test_method

Ответ 3

тест setup.py

test.py не является гибким, но здесь альтернатива:

Модуль unittest может запускать определенные методы тестирования

Из документации по unittest

Модуль unittest может использоваться из командной строки для запуска тестов из модулей, классов или даже отдельных методов тестирования:

python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

Вы можете передать список с любой комбинацией имен модулей и полностью квалифицированными именами классов или методов.

Вы можете запускать тесты с большей детализацией (более высокая многословность), передавая флаг -v:

python -m unittest -v test_module

Список всех параметров командной строки:

python -m unittest -h

Ответ 4

Если вы используете pytest для модульного тестирования, вы можете запустить файл напрямую, избегая файла setup.py.

Запуск всех тестов для меня:

python setup.py test

Запуск определенного теста:

pytest --pyargs path/to/test.py

Надеюсь, что это поможет.

(Я знаю, что это сообщение уже немного устарело, но я пришел сюда, пытаясь запустить метод тестирования pytest, полагая, что он может кому-то помочь)

Ответ 5

в случае pytest запустить специальный тест:

python setup.py test --addopts tests/jobs/test_data_monitoring.py::TestDataMonitoring::test_dataframe__bulk_update