Home > database >  How to override a function in every instance for unit tests in Python?
How to override a function in every instance for unit tests in Python?

Time:09-22

I have a function, Foo, and already used in Bar and some other places in the Python package. And for the unit test, I need to replace that function with fake_Foo. The fake_Foo should override every previous instance. How to do that?

I have tried Foo = fake_Foo and global Foo but it does not work.

TL;DR: I am trying to override _command function here with fake_command function here for every previous instance.

CodePudding user response:

I did it with:

from _pytest.monkeypatch import MonkeyPatch

def fake_Foo(monkeypatch=MonkeyPatch()):

    def fake__Foo(args):
        ...

    monkeypatch.setattr("module.Foo", fake__Foo)

Just call fake_Foo() when you need to override.

  • Related