Python
test
CI
unittest
Mock

pythonのMockで属性の指定方法あれこれ

属性の多いモックを作る機会があったので、属性の指定方法を調べてみました。
dictを展開して渡す3番目に紹介した方法が使い勝手が良さそうです。

Mockのインスタンスの属性に値を代入する

単純な場合はこれでOK

mock = Mock()
mock.hoge = "HOGE"

Mockインスタンス生成時に引数で指定

引数で使用さているキーワード以外の属性をこの方法で設定できます。
引数の構成はこちらで確認できます。

mock = Mock(hoge="HOGE")

↑の応用でオブジェクトを引数に渡して展開する方法

個人的にはこれが好み。特に数が増えた場合に見やすい気がする。

mock = Mock(**{
  "hoge" : "HOGE"
})

インスタンス生成後にconfigure_mockを使う

mock = Mock()
mock.configure_mock(**{
  "hoge" : "HOGE"
})