Как вывести стандартный вывод print() в консоль во время выполнения pytest?
Я иногда хочу просто вставить несколько операторов print в свой код и посмотреть, что будет выведено при его выполнении. Обычно я "тестирую" его с помощью существующих тестов pytest. Однако, когда я запускаю их, я не вижу никакого стандартного вывода (по крайней мере, в PyCharm, моем IDE).
Существует ли простой способ увидеть стандартный вывод во время выполнения тестов pytest?
5 ответ(ов)
Чтобы вывести все операторы print на консоль при запуске тестов, используйте параметр -s. Например, вы можете выполнить команду:
py.test exampletest.py -s
Это позволит вам увидеть все выводимые на экран сообщения из файла exampletest.py во время выполнения тестов.
Попробуйте выполнить pytest -s -v test_login.py для получения более подробной информации в консоли.
-v — это сокращение от --verbose (подробный вывод).
-s означает "отключить все захватывание" (disable all capturing).
Вы можете вывести результаты печати с помощью следующих команд. Флаг -rP позволяет более явно отображать вывод печати, чем флаги -s, --capture=no и --capture=tee-sys:
pytest -rP
pytest -s
pytest --capture=no
pytest --capture=tee-sys
Команда, которую вы привели, запускает тесты с использованием pytest и имеет следующие параметры:
test_name.py— имя файла с тестами, которые вы хотите запустить.-v(или--verbose) — включает более подробный вывод, так что вы увидите больше информации о том, какие тесты были запущены и какие из них прошли или не прошли.-s— отключает захват вывода, что позволяет вам видеть все сообщения, которые выводятся в процессе выполнения тестов (например,print).
Так что, да, всё довольно просто! Эта команда запускает тесты из указанного файла в режиме подробного вывода, позволяя вам видеть стандартные сообщения.
Я бы предложил использовать команду -h. Есть довольно интересные команды, которые могут быть полезны. Однако для этого конкретного случая достаточно использовать -s, что является сокращением для --capture=no.
pytest <test_file.py> -s
Конфигурация логгера для записи в файл и вывода на stdout
Что такое conftest.py в Pytest?
Работают ли параметризованные тесты pytest с тестами на основе классов unittest?
Как управлять запуском тестов в параллельном режиме с помощью pytest-xdist?
Как заставить фикстуры pytest работать с декорированными функциями?