Как я могу подделать sys.stdout.istty в тестовом примере, не вступая в конфликт с захватом pytest stdout? - PullRequest
0 голосов
/ 25 января 2019

Мне нужно подделать возвращаемое значение sys.stdout.istty() в тестовом случае.Monkeypatching с monkeypatch.setattr("sys.stdout.isatty", lambda: True) не вариант, потому что он конфликтует с захватом pytest stdout при использовании опции -s.Как мне подделать уровень тестового набора?

1 Ответ

0 голосов
/ 25 января 2019

Python не допускает встроенных типов, таких как file, для исправления ошибок. .sys.stdout является файловым объектом. Патч должен быть применен в пространстве имен модуля производственного кода (<module>.sys.stdout).При использовании pytest-mock (приспособление mocker) это выглядит следующим образом:

def test_of_prod_code_with_dependency(mocker):
    stdout_mock = mocker.patch("<module>.sys.stdout")
    stdout_mock.isatty.return_value = istty

    # production code which depends on sys.stdout.isatty() comes here
...