printand関数を直接使用するいくつかの(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.filenosys.stdin.encodingsys.stdin.errorsread*