mtbの学んだことのブログ

とあるPythonエンジニアのブログ

mock.patch.objectとmock.patchの違いのメモ

Pythonのmockを使っているときに、mock.patch とか、 mock.patch.object とか出てきて、この違いをうまく説明できない。

今回は、もう少しこの理解を深めたいと思う。

今のところ、オブジェクトの時は、objectが必要、、、みたいな、ふわっとした理解になっている。

今のところの理解

  • mock.patch は、文字列で指定されたimport するパッケージをモックしている。文字列で指定されたパッケージ、クラスを先にインポートして、それを別のオブジェクトに置き換えるようなイメージ
  • mock.patch.object は、指定したオブジェクトのプロパティを置き換える。文字列ではなくて、オブジェクトを渡して置き換える点がmock.patchと違う。

26.5. unittest.mock — モックオブジェクトライブラリ — Python 3.6.5 ドキュメント

26.5. unittest.mock — モックオブジェクトライブラリ — Python 3.6.5 ドキュメント