Я новичок, когда дело доходит до тестирования модулей python, но я очень хочу учиться!
Я просто прочитал python setup.py test
может запускать все наборы, полученные из классов unittest. Интересно, могу ли я также использовать setup.py для запуска одного пакета и/или одного тестового примера, возможно, добавив некоторый модификатор к предыдущей команде, например, python setup.py tests suitename
. Если да, можете ли вы указать мне какие-либо документы/примеры?
Может ли unittest разрешить тестирование одного случая/пакета через "setup.py test"?
Ответ 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 может использоваться из командной строки для запуска тестов из модулей, классов или даже отдельных методов тестирования:
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