我有以下文件:
/foo.py
/foo2.py
/test_food.py
在foo.py文件中,我有以下内容:
from foo2 import Foo2
class Foo(object):
def GetFoo2(self):
f = Foo2()
return f.Get()
在foo2.py中,我有以下代码:
class Foo2(object):
def __init__(self):
self.myvar = "eeee"
def Get(self):
return self.myvar
在test_foo.py中,
import os, sys, json, pytest
from mock import *
from foo import Foo
def test_foo_ok(monkeypatch):
monkeypatch.setattr(Foo, "GetFoo2", lambda x:"abc")
f = Foo()
result = f.GetFoo2()
assert result == "abc"
所以,在test_foo.py中,我能够mock或者monkeypatch方法GetFoo2()
。然而,除此之外,如何在不改变foo.py和foo2.py代码的情况下,从test_foo.py中mock Foo2的Get()
方法的返回值呢?