2016-08-16 17 views
10

Python prompt-toolkit (https://github.com/jonathanslenders/python-prompt-toolkit) ile komut satırı arabirimim yapılamam için doğruları oluşturmak istiyorum.Python istemi araç seti için nasıl denetimler yaratılır?

  • Kullanıcı etkileşimini komut satırı aracıyla nasıl taklit edebilirim?
  • Bu ispatlar için en iyi uygulama var mı?

Örnek Kod:

from os import path 
from prompt_toolkit import prompt 

def csv(): 
    csv_path = prompt('\nselect csv> ') 
    full_path = path.abspath(csv_path) 
    return full_path 

cevap

8

Sen istemi aramaları mock olabilir.

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() 

değil prompt_toolkit itibaren app.py gelen istemini alay noktaya kadar sadece bir dikkat, çünkü çağrıyı dosyadan engellemek istersiniz.

docstring module ile göre:

muhtemelen kullanım durumları% 90, (GNU taleb için saf Python yerine) kullanıcıdan bazı giriş almak için bu kütüphaneyi kullanıyorsanız, : func: .prompt fonksiyonu ihtiyacınız olan şey.

Ve method docstring olarak

diyor ki:

kullanıcıdan girdi almak ve geri. Bu, prompt_toolkit işlevselliğiyle ilgili bir sarıcıdır ve raw_input için bir yedek olabilir. (Veya GNU taleb.)

projesinden Getting started ardından: bir dize türü dönmek

>>> 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'> 

yöntem prompt olarak, kullanıcıların uygulamanızla entegrasyonu simüle etmek mock.return_value kullanabilirsiniz.

İlgili konular