2016-04-23 31 views
0

monkeypatchまたはpytest.mockでカスタムデコレータをパッチするにはどうすればいいですか?モックとpytestを使ってpythonでデコレータをモックする

package.decorator = mytestdecorator

問題は、それは私が実際にデコレータが動作することを必要とする他のいくつかのテストを壊すことです:私は(this質問への答えを)やってそれを模擬するために管理します。

答えて

2

モックされたデコレータのライフサイクル全体を制御し、デコレータを元の状態に戻す必要があります。

これは、いくつかの異なる方法で行うことができます嘲笑デコレータを構築し、__exit__ことによってそれを戻ります

  • コンテキストマネージャ。
  • テスト用のセットアップとティアダウン機能、teardownはデコレータを元に戻す必要があります。
  • pytestファイナライザ付きフィクスチャ
  • pytestフィクスチャyield expression。それは短いコードを保持し、できるだけ早くあなたが実現するよう、治具のコードでyield文の後に来るものすべてがクリーンアップコードであること、物事を行うことは非常にはっきりしているよう

は個人的に私は@pytest.yield_fixtureが好き。

+0

また、例を挙げることができますか? –

関連する問題