我在测试中使用模拟 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 并仅替换类方法,但没有运气......在测试中模拟类的正确方法是什么? (该类由我正在测试的类内部使用)
最佳答案
我解决了!
工作解决方案如下:
...
from myapp.mymodule.OriginalClass import OriginalClass
def methodStub(self):
return
class TestMyClass(TestCase):
@patch.object(OriginalClass, 'method', methodStub)
def testFoo(self):
...
关于python - Django 测试中的类模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788004/