サブクラスで、薄いラッパーです。使えば、クラスだろうがオブジェクトだろうがメソッドだろうが関数だろうが、何でもモックオブジェクトで置き換えて、その振る舞いを自由にシュミレートすることができます。オブジェクトを代入するやり方です。user.get_name()'mock'代入してモック化する部分は、以下のようにまとめて書くこともできます。get_nameメソッドをほかの関数で置き換えることもできます。mock_get_nameなお、クラスをモックオブジェクトで置き換えて、メソッドの振る舞いを規定する場合には少し注意(慣れ?)が必要です。get_nameメソッドを紐付けてやらないといけません。with句やデコレータでは、「patch」あるいは「patch.object」を使って、置換対象のクラスやメソッドを置き換えます。置き換えることができる対象は、次の表の通りです。前置きはここまでにして、今回は、実際のテストコードでよく使う利用シーンごとに使用方法を説明していきたいと思います。使う場合では、モック化したオブジェクトの取り扱い方やモックの適用範囲が異なってきますが、利用シーンは変わらないのでまとめて説明しています。(デコレータを使った場合はメソッドの引数として)受け取ることができるので、受け取ったモックオブジェクトに対して後から振る舞いを規定することができます。MagicMock)(参考)http://www.voidspace.org.uk/python/mock/patch.html#patch-objectここで大きなハマりポイントが。できる形の文字列であることクラス名、メソッド名、関数名のいずれかであること(モジュール名は不可)といったルールが存在します。できる形で書かないとダメということです。できない形で書くとエラーになってしまいます。置換したはずのクラスが別物になってしまうケースがあります。以下のように書くのが正解です。MagicMock)詳細については、次の記事に詳しく書かれています。指定する文字列は、取り扱いがややこしいので要注意です。メソッドが実行されたときの戻り値を規定することができます。user.get_name()'mock'と書きます。ついても同じようにして戻り値を置換することができます。メソッドの定義そのものを置き換える関数を指定することができます。第3引数に、置き換えるモックオブジェクトを指定することもできます。指定できるのはモックオブジェクトに限ります。呼び出しには3引数の形式と2引数の形式があります。対象のオブジェクト、属性名、その属性を置き換えるオブジェクトを取ります。デコレート対象となる関数に追加の引数として渡されます。(デコレータを使った場合はメソッドの引数として)受け取ることができるので、受け取ったモックオブジェクトに対して後から振る舞いを規定することができます。13.関数を置き換えるメソッドを置き換えるケースとほぼ同じなので、わざわざ分けて説明する必要もないのですが、一応。(なるべく、これまでと少し違う系統のサンプルコードを載せてみます。任意の例外を発生させるケースでも利用されます。使うこのような使い方も。後から振る舞いを規定するこういう使い方でビルトイン関数をモック化することができます。Overflowこういった応用例もあります。test()http://www.voidspace.org.uk/python/mock/patch.html#patch4.属性を置き換える省略。(クラスがインスタンス化された際の)インスタンスオブジェクトを置き換える最後はこれまでとは少し異なったパターンかもしれません。使うと、クラスがインスタンス化された際のインスタンスオブジェクトを置き換えることができます。(20)月別アーカイブはてなブログをはじめよう!akiyokoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。