如何修补基类方法?

时间:2015-08-28 15:21:07

标签: python python-mock

我有两个班级:

Stripe

当我尝试在测试中修补A.get_something时失败。

class A(object):
    def get_something(self):
        return 1

class B(A):
    pass

这里有什么问题?

2 个答案:

答案 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)

您正在做的是正确的但如果它不起作用,可能是因为其他模块将AB导入其命名空间而不使用与您修补的相同的包。

当你做这样的事情时,我已经看到了这种情况:

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