私は、対話型プログラムのテストをサポートするPython用のテストツールを知りたいと思います。私は楽器Joseph
ので、私はそのインタラクティブな動作をエミュレートすることができますしたいと思います対話型のPythonプログラムのテスト
$ python dummy_program.py
>> Hi whats your name? Joseph
:たとえば、私はで起動したアプリケーションを持っています。
私は、対話型プログラムのテストをサポートするPython用のテストツールを知りたいと思います。私は楽器Joseph
ので、私はそのインタラクティブな動作をエミュレートすることができますしたいと思います対話型のPythonプログラムのテスト
$ python dummy_program.py
>> Hi whats your name? Joseph
:たとえば、私はで起動したアプリケーションを持っています。
何を通常(例えば)sys.stdinをからピックアップしたいようにあなたの最善の策は、おそらく依存性の注入では、実際に渡されたオブジェクトであるあなたはこのような何かするかもしれないので:。
import sys
def myapp(stdin, stdout):
print >> stdout, "Hi, what's your name?"
name = stdin.readline()
print >> stdout "Hi,", name
# This might be in a separate test module
def test_myapp():
mock_stdin = [create mock object that has .readline() method]
mock_stdout = [create mock object that has .write() method]
myapp(mock_stdin, mock_stdout)
if __name__ == '__main__':
myapp(sys.stdin, sys.stdout)
を
幸いにも、Pythonはこれを非常に簡単にします。 http://konryd.blogspot.com/2010/05/mockity-mock-mock-some-love-for-mock.html
実際、依存性注入は、道に行く方法です。しかし、何らかの奇妙な理由でコードを変更できない場合は、 'stdin'と' stdout'を 'sys.stdin = mock_stdin'と' sys.stdout = mock_stdout'で直接変更することができます。テスト中にオリジナルが必要だった場合は、元の値を保持する 'sys .__ stdin__'と' sys .__ stdout__'を使うことができました。 – PaoloVictor