Использование pytest для проверки приглашения ввода ⇐ Python
-
Anonymous
Использование pytest для проверки приглашения ввода
Представьте, что у меня есть функция Python, которая выглядит примерно так:
def myFunction(аргумент: str) -> Нет: делать вещи() result = input(f'{complication_logic_involving_argument}: ') сделатьДругоеStuff() Я хочу проверить результаты myFunction(), но я также хочу проверить, что сложное приглашение отображается правильно для каждого возможного аргумент.
Проблема в том, когда я пытаюсь
@mark.parameterize(('аргумент', 'подсказка'), ( («firstValue», «Ожидаемое приглашение»), )) def test_myFunction (аргумент: str, приглашение: str,monkeypatch, capsys) -> Нет: Monkeypatch.setattr('builtins.input', лямбда _: 'что угодно') мояФункция(аргумент) # ЗДЕСЬ МОЙ ТЕСТОВЫЙ КОД НЕ ПРОЙДЕТ! снимок = capsys.readouterr() утвердить приглашение в snapshot.out Похоже, что фактическое приглашение не относится ни к snapshot.out, ни к snapshot.err. Я также пробовал использовать capfd, но безуспешно.
Есть ли возможность перехватить приглашение input()`?
Представьте, что у меня есть функция Python, которая выглядит примерно так:
def myFunction(аргумент: str) -> Нет: делать вещи() result = input(f'{complication_logic_involving_argument}: ') сделатьДругоеStuff() Я хочу проверить результаты myFunction(), но я также хочу проверить, что сложное приглашение отображается правильно для каждого возможного аргумент.
Проблема в том, когда я пытаюсь
@mark.parameterize(('аргумент', 'подсказка'), ( («firstValue», «Ожидаемое приглашение»), )) def test_myFunction (аргумент: str, приглашение: str,monkeypatch, capsys) -> Нет: Monkeypatch.setattr('builtins.input', лямбда _: 'что угодно') мояФункция(аргумент) # ЗДЕСЬ МОЙ ТЕСТОВЫЙ КОД НЕ ПРОЙДЕТ! снимок = capsys.readouterr() утвердить приглашение в snapshot.out Похоже, что фактическое приглашение не относится ни к snapshot.out, ни к snapshot.err. Я также пробовал использовать capfd, но безуспешно.
Есть ли возможность перехватить приглашение input()`?
Мобильная версия