[解決済み】入力引数に基づくpython関数のモッキング
2022-04-09 11:44:55
質問
私たちは、これまで モック をPython用にしばらく使っていました。
さて、ある関数をモック化したい状況が発生しました。
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
通常、これをモック化する方法は、(foo がオブジェクトの一部であると仮定して)次のようになります。
self.foo = MagicMock(return_value="mocked!")
foo()を何度も呼び出す場合にも
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
さて、入力パラメータが特定の値を持つときに、固定値を返したいという状況に直面しています。例えば、"my_param" が "something" に等しい場合、"my_cool_mock" を返したいのです。
で利用できるようです。 python用モキート
when(dummy).foo("something").thenReturn("my_cool_mock")
モックで同じことを実現する方法を探しているのですが、うまくいきません。
何かアイデアはありますか?
解決方法は?
<ブロッククオート
もし
side_effect_func
が関数である場合、その関数が返すものはすべて
を呼び出すと、そのモックが返します。そのため
side_effect_func
関数が呼び出されます。
モックと同じ引数です。これにより、モックの戻り値を変えることができます。
の値は、入力に応じて動的に呼び出されます。
>>> def side_effect_func(value):
... return value + 1
...
>>> m = MagicMock(side_effect=side_effect_func)
>>> m(1)
2
>>> m(2)
3
>>> m.mock_calls
[call(1), call(2)]
関連
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] モッキングとは?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
任意波形を生成してtxtで保存するためのPython実装
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く