Ответ 1
Вы можете mock вызвать приглашения.
app_file
from prompt_toolkit import prompt
def word():
result = prompt('type a word')
return result
test_app_file
import unittest
from app import word
from mock import patch
class TestAnswer(unittest.TestCase):
def test_yes(self):
with patch('app.prompt', return_value='Python') as prompt:
self.assertEqual(word(), 'Python')
prompt.assert_called_once_with('type a word')
if __name__ == '__main__':
unittest.main()
Просто обратите внимание на то, что вы должны высмеивать приглашение от app.py, а не от prompt_toolkit, потому что вы хотите перехватить вызов из файла.
В соответствии с docstring модулем:
Если вы используете эту библиотеку для получения некоторого ввода от пользователя (как чистая замена Python для readline GNU), вероятно, для 90% случаев использования, функция: func:
.prompt
- это все, что вам нужно.
И как метод docstring говорит:
Получите ввод от пользователя и верните его. Это оболочка вокруг множества функций
prompt_toolkit
и может быть заменойraw_input
. (или GNU readline.)
Следуя Начало работы из проекта:
>>> from prompt_toolkit import prompt
>>> answer = prompt('Give me some input: ')
Give me some input: Hello World
>>> print(answer)
'Hello World'
>>> type(answer)
<class 'str'>
Как метод prompt
возвращает тип строки, вы можете использовать mock.return_value
для имитации интеграции пользователя с вашим приложением.