Django测试中的类模拟

时间:2013-11-05 11:32:28

标签: python django unit-testing mocking

我正在使用模拟1.0.1(http://www.voidspace.org.uk/python/mock/)在我的测试中模拟对象,并且我能够使用这种方法模拟日期:

def dateStub():
    return timezone.make_aware(datetime(2013, 1, 1, 10, 30), timezone.utc)


@patch('django.utils.timezone.now', dateStub)
def testFoo(self):
    ...

但是,现在我正在尝试模拟一个类,同样的方法没有按预期工作:

class FakeClass(OriginalClass)
    def method(self):
        pass


@patch('myapp.mymodule.OriginalClass', FakeClass)
def testFoo(self):
    ...

我也尝试使用@ path.object并仅替换类方法,但没有运气......在测试中模拟类的正确方法是什么? (该类由我正在测试的类在内部使用)

1 个答案:

答案 0 :(得分:2)

我解决了!

工作解决方案如下:

...
from myapp.mymodule.OriginalClass import OriginalClass

def methodStub(self):
    return

class TestMyClass(TestCase):

    @patch.object(OriginalClass, 'method', methodStub)
    def testFoo(self):
        ...