我有两个班级:
Stripe
当我尝试在测试中修补A.get_something时失败。
class A(object):
def get_something(self):
return 1
class B(A):
pass
这里有什么问题?
答案 0 :(得分:2)
发现了。我必须修补导入的A
from some_module.myclasses import A, B
...
def test_something(self):
with patch.object(A, 'get_something', return_value=2):
self.assertEqual(B().get_something(), 2)
答案 1 :(得分:1)
您正在做的是正确的但如果它不起作用,可能是因为其他模块将A
或B
导入其命名空间而不使用与您修补的相同的包。
当你做这样的事情时,我已经看到了这种情况:
mypackage/
__init__.py
mod.py
Python模块
mypackage/mod.py
class A(object):
def get_something(self):
return 1
mypackage/__init__.py
from mod import *
然后mypackage.mod.A
可能导入mypackage.A
,但您的修补mypackage.mod.A