Pytest-xdist как сохранить логи (принты)?
Тестирую систему с помощью Pytest. Появилась необходимость запускать тесты одновременно и параллельно. Использую для этого pytest-xdist. Однако проблема такова, что выводит логи в консоле только последнего теста или упавших. А как вывести все?
записывать принты в файлы тоже не получается. Почему то при параллельном тестировании запись в файл не идет
Дополнительно:
ну например использовать logging вместо принтов, и будет удобнее и всякие нормальные отчеты будут их резать по тестам
Есть библиотека logging, воспользуйся ею.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы сохранить логи (принты) при использовании pytest-xdist, можно воспользоваться специальным плагином pytest-capturelog. Этот плагин позволяет захватывать вывод из стандартного потока вывода (stdout) и сохранять его в файл для каждого процесса, запущенного pytest-xdist.
Для начала необходимо установить плагин pytest-capturelog с помощью pip:
pip install pytest-capturelogpip install pytest-capturelog
Затем нужно добавить опцию --capture=no в команду запуска pytest-xdist, чтобы отключить захват вывода pytest и разрешить работу pytest-capturelog. Например:
pytest -n auto --capture=no
Теперь все принты и логи будут сохраняться в отдельные файлы для каждого процесса, что позволит вам легко отслеживать их и анализировать. Важно помнить, что логи будут сохраняться в директории, где была запущена команда pytest, поэтому убедитесь, что у вас есть права на запись в эту директорию.
Таким образом, используя плагин pytest-capturelog с pytest-xdist, вы сможете легко сохранять логи и принты при параллельном запуске тестов, что поможет вам в дальнейшем анализе результатов и их отладке.