【发布时间】:2019-05-14 00:36:22
【问题描述】:
我试图在测试期间替换方法函数。原来的方法比较复杂,所以我想在测试中用一个简单的函数来代替它。
我尝试过使用模拟库。但看起来它只修改了在测试用例中直接创建的对象。如果测试用例中的一些其他函数调用了该方法,则该方法不会被替换。
class1.py:
class Class1:
def foo(self):
#do a lot of calculation
return 1
class2.py:
from .class1 import Class1
class Class2:
def doo(self):
my_class1 = Class1()
return my_class1.foo()
test.py:
import mock
from .class1 import Class1
from .class2 import Class2
class Class1:
def foo(self):
# no calculation
return 2
@mock.patch.object(Class1, "foo")
def test_case(mock):
my_class2 = Class2()
assert my_class2.doo() == 2
我正在尝试将 Class1 中的 foo() 替换为在 test.py 中创建的新 foo()。但是因为Class1对象是在Class2对象内部创建的,所以方法不是这样替换的`
【问题讨论】:
标签: python python-3.x unit-testing testing python-mock