ユーザー入力用のダイアログを表示するコードをテストしようとしているときにこの問題が定期的に発生し、同じソリューションが両方で機能するはずです。テスト範囲内のinput
という名前にバインドされた新しい関数を、標準のinput
関数と同じシグネチャで提供する必要があります。この関数は実際にユーザーにプロンプトを表示せずにテスト値を返します。
def my_test_input(message):
return 7
:あなたのテストやコードは、この注入は、いくつかの方法で設定を行うことができますされているので、私は読者の練習としてそれを残しておきますが、あなたの交換方法は、単純なもののようなものになるかどうかに応じて、明らかに、関連性がある場合はmessage
の内容を切り替えて、選択したデータ型を返すこともできます。あなたはまた、多くの状況で同じ置換方法を再利用することができますより柔軟かつ一般的な何かを行うことができます。
def my_test_input(retval, message):
return retval
をし、その後、あなたはinput
に部分関数を注入します:
test_input_a
を残し
import functools
test_input_a = functools.partial(my_test_input, retval=7)
test_input_b = functools.partial(my_test_input, retval="Foo")
引数をとり、retval
引数がすでにバインドされている関数には、test_input_b
があります。
私はこれに似た何かをやりました。 test_input関数 "test_input(msg)"を作成しました。これは、私がテストしているモジュールの入力のデフォルト動作を上書きします: "module.input = test_input"。私はシミュレートされた入力値を、test_input関数の前に定義されたグローバル変数 "sample_input"で設定し、各テストケースの前に設定します。 – royvandewater