Как вывести стандартный вывод 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
Как правильно проверить, что исключение возникает в pytest?
Почему используется string.join(list), а не list.join(string)?
Создание словаря с помощью генератора словарей
Как получить полный путь к директории текущего файла?
Найти все файлы с расширением .txt в директории на Python