MyTetra Share
Делитесь знаниями!
Перехват вывода stdout и stderr в pytest
Время создания: 04.03.2019 16:31
Автор: br0ke
Текстовые метки: python, test, pytest, capture, stdout, stderr, capsys, capsysbinary, capfd, capfdbinary
Раздел: Информационные технологии - Python - Библиотеки - pytest

pytest предоставляет следующие фикстуры для доступа к stdout/stderr и выполнения проверок:


  1. capsys -- перехват stdout и stderr процесса
  2. capsysbinary -- то же самое, только в байтах
  3. capfd -- если нужно работать на уровне файловых дестрипторов ОС
  4. capfdbinary -- то же самое, только в байтах


Все эти фикстуры имеют функцию readouterr(), которая возвращает named tuple:


  • out -- содержимое stdout
  • err -- содержимое stderr



Использование:


def test_myoutput(capsys): # or use "capfd" for fd-level

print("hello")

sys.stderr.write("world\n")

captured = capsys.readouterr()

assert captured.out == "hello\n"

assert captured.err == "world\n"

print("next")

captured = capsys.readouterr()

assert captured.out == "next\n"


Или:


def test_foo(capfd):

foo() # Writes "Hello World!" to stdout

out, err = capfd.readouterr()

assert out == "Hello World!"

 
MyTetra Share v.0.52
Яндекс индекс цитирования