print
and関数を直接使用するいくつかの(python 3)コードをテストしたいと思いinput
ます。私が理解しているように、これを行う最も簡単な方法は、依存性注入によるものです。入力ストリームと出力ストリームを引数として受け取るようにコードを変更し、デフォルトでテスト中にモックオブジェクトを使用sys.stdin
して渡します。呼び出しsys.stdout
をどうするかは明らかです:print
print(text)
#replaced with...
print(text, file=output_stream)
ただし、input
入力ストリームと出力ストリームの引数はありません。次のコードはその動作を正しく再現していますか?
text = input(prompt)
#replaced with...
print(prompt, file=output_stream, end='')
text = input_stream.readline()[:-1]
私はの実装を調べましたが、メソッドを呼び出すのではなく、呼び出して調べ、メソッドを呼び出すのではなくinput
、非常に多くの魔法を実行します。これらのモックをどこから始めればよいのかわかりません。sys.stdin.fileno
sys.stdin.encoding
sys.stdin.errors
read*