matobaの備忘録

和歌山と東京を往復しつつ活動するエンジニアの記録

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

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

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

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

今のところの理解

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

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

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