Моя цель - получить файл с результатами моих модульных тестов, включая все зарегистрированные исключения, которые возникли.
Я выполняю свой скрипт тестирования на python, используя pytest
, который генерирует файл xml с точными даннымия хочу.Проблема в том, что этот файл генерируется сразу после завершения теста, а не во время его выполнения, как я хочу.
Вот команда, с которой я выполняю свой тест:
python -m pytest test_signout.py --junitxml ./results/TestsOut.xml -vs
Я попытался перенаправить stdout
в файл с успехом, но, конечно, он не содержит никаких подробностей, связанных с исключениями, такими как ошибки подтверждения, которые я хочу получить.
Iпопробовал тот же метод для stderr
, но файл остается пустым.
Вот что я пытаюсь сделать:
@contextmanager
def redirected_stdout(filename):
original_stderr = sys.stderr
sys.stderr = open(filename, 'at')
try:
yield
finally:
sys.stderr = original_stderr
Я использую этот метод путем добавленияследующую команду в начале каждого из моих методов, и затем я включаю весь свой код в это:
with redirected_stdout("./results/TestsOut.log"):
Есть ли способ, как можно зарегистрировать как stderr
, так и stdout
во время выполнения илиЕсть ли другой способ достичь того, чего я хочу?
После того, как я сгенерирую этот файл, я планирую в качестве последнего шага моего теста прочитать его и передать его в решение управления тестированием, которое я использую.
UPDATE : Я изменил stderr
на stdout
и добавил file=sys.stdout
в конце всех операторов печати, которые находятся в предложениях except
, и теперь эти данные печатаются в нужном мне файле.Я не получаю весь вывод, по крайней мере, я получаю исключения.Если есть лучший способ сделать это, пожалуйста, дайте мне знать.