python - Django 测试中的类模拟

标签 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 并仅替换类方法,但没有运气......在测试中模拟类的正确方法是什么? (该类由我正在测试的类内部使用)

最佳答案

我解决了!

工作解决方案如下:

...
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/

相关文章:

python - BeautifulSoup 提取不带标签的条纹文本

jquery 时间之前的 unix 纪元

unit-testing - 使用 Go 语言进行测试的正确包命名

Django Save Object 基于PK 和另一个字段

python - 属性错误 : 'str' object has no attribute 'regex' django 1. 9

javascript - Chai 希望 .to.throw(Error) 无法按预期工作

c# - 如何针对不同版本的外部 dll api 对我的项目进行单元测试?

python - celery 。获取当前链的id

python - NodeJS 应用程序无法从 Python shell 获取输入

python - Django:管理员在列出 bool 字段时出现 KeyError