2016-08-16 58 views

回答

8

你可以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據:

如果您正在使用該庫從用戶(作爲 純Python替代GNU的readline)檢索某些輸入,可能是用例的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來模擬你的應用程序用戶的整合。