我编写了一个由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)。
有什么想法吗?