你可以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 module:
如果您使用此库来检索用户的某些输入(作为
GNU readline 的纯 Python 替代品),可能适用于 90% 的用例,
:func:.prompt 函数就是你所需要的。
正如method docstring 所说:
从用户那里获取输入并返回。
这是对许多 prompt_toolkit 功能的封装,可以替代 raw_input。 (或 GNU readline。)
按照项目中的Getting started:
>>> 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 来模拟用户与您的应用程序的集成。