测试Django模型机制

时间:2015-11-03 08:28:46

标签: python django unit-testing mocking

我编写了一个由django模型使用的基类。这个基类为模型添加了一些检查,所以我可以肯定它们不能以某种方式使用。

我想测试这个基类,但为了测试所有边缘情况,我需要测试一个不正确的实现(以确保捕获错误的实现)。

由于Django的工作方式,我无法直接在测试中编写模型类,如

class TestMyBaseClass:
    def test_original_must_be_provided(self, db):
        class MyModel(FlattenedProxyModel):
            pass
        # Create an instance
        a = MyModel()
        # Fail when trying to refresh info
        with pytest.raises(MyError):
            a.refresh_fields()

有些情况会失败,因为这个类没有数据库表(尽管这个特定的测试会起作用,因为永远不会访问数据库)。

所以正确的方法是使用Django模型的模拟。但是那个活动怎么会起作用呢?我想要一个扩展我的基类的模拟(使用它作为mixin),它需要适当地响应isinstance(self,django.db.models.Model)。

有什么想法吗?

0 个答案:

没有答案