[解決済み] readonlyプロパティをmockでモックするには?
2022-05-18 11:03:34
質問
読み取り専用のプロパティを モック ?
試してみました。
setattr(obj.__class__, 'property_to_be_mocked', mock.Mock())
が、問題は、それがクラスのすべてのインスタンスに適用されることです...これは私のテストを壊します。
何か他のアイデアはありますか?私は完全なオブジェクトをモックしたくないのですが、この特定のプロパティだけです。
どのように解決するのですか?
私は、より良い方法は、プロパティのモックを
PropertyMock
をモックするよりも、むしろ
__get__
メソッドを直接モックするのではありません。
に記載されています。
ドキュメント
を検索すると
unittest.mock.PropertyMock
:
クラスのプロパティやその他の記述子として使用されることを意図したモックです。
PropertyMock
は
__get__
と
__set__
メソッドを使用することで、取得時に戻り値を指定することができます。
以下はその方法です。
class MyClass:
@property
def last_transaction(self):
# an expensive and complicated DB query here
pass
def test(unittest.TestCase):
with mock.patch('MyClass.last_transaction', new_callable=PropertyMock) as mock_last_transaction:
mock_last_transaction.return_value = Transaction()
myclass = MyClass()
print myclass.last_transaction
mock_last_transaction.assert_called_once_with()
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] モックとスタブの違いは何ですか?
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] テンプレートファイル変更時にFlaskアプリを再読み込みする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pyvenv-3.4 は 0 ではない終了ステータス 1 を返しました。
-
[解決済み] 複数のプロットを1つのPDFファイルに保存する
-
[解決済み] PythonでSelenium WebDriverを使用してテキストを取得する方法
-
[解決済み] 巨大なテキストファイルから特定の行にジャンプするには?
-
[解決済み] Pythonでzip(*[iter(s)]*n)はどのように動作するのですか?
-
[解決済み] re.sub置換パターンにおけるキャプチャグループの後方参照への対応
-
[解決済み] 標準のjsonモジュールでfloatをフォーマットする
-
[解決済み] Pythonスクリプトをコンパイルする(実行しない) [重複]。
-
[解決済み] Pythonでファイルがバイナリ(非テキスト)かどうかを検出するにはどうしたらいいですか?
-
[解決済み] Python のモック patch.object を使って、他のメソッド内で呼び出されたメソッドの戻り値を変更する。