2
py.test monkeypatching/mocking documentationでこれは言及されていませんが、関数本体に導入されたローカル変数をmonkeypatchすることは可能ですか?関数本体に導入されたローカル変数をmonkeypatchすることは可能ですか?
私の実験:
def my_method():
my_var = 'foo'
return my_var[:2]
テストは次のとおりです。
def test_my_method(monkeypatch):
monkeypatch.setattr(my_module.MyClass.my_method.my_var, lambda: 'bar')
assert my_method() == 'ba'
AttributeError: 'function' object at MyClass.my_method has no attribute 'my_var'
あなたは何をしようとしているのか分かりません。あなたは、それを適用したいコードの煮詰めバージョンと同様、あなたは、monkeypatchingを試していくつかの最小限のコードを投稿することはできますか? ([mcve]を参照してください)また、あなたはサルのパッチを当てて何を達成しようとしていますか?たぶんあなたの状況に適した方法があります。 –
質問のタグに[tag:py.test]があります。テスト目的でスタブ/モック/偽/ダブルを試そうとしていますか? –
メソッドのローカルスコープで定義された変数は、メソッドの属性と同等ではありません。私たち[MCVE]を見せてください。 –