如何注册仅在测试中使用的Django模型

时间:2017-03-14 13:00:38

标签: django django-testing

我正在编写一个具有自定义模型字段的应用。我想测试那个字段,使用仅在测试中使用的模型,但我很难让模型在测试中工作。

我的一些应用结构是这样的:

myapp/
    fields.py
    models.py
tests/
    fields/
        models.py
        tests.py
    settings.py
    test_models.py
    test_views.py

tests/fields/models.py是这样的:

from django.db import models
from myapp.fields import MyCustomField

class MyTestModel(models.Model):
    custom_field = MyCustomField()

然后我导入MyTestModel并尝试在tests/fields/tests.py中使用它。

我尝试过的事情......

1。最初我得到了:

  

RuntimeError:Model类tests.fields.models.MyTestModel没有声明显式的app_label,也不在INSTALLED_APPS的应用程序中。

2。所以我在"tests",的{​​{1}}添加了INSTALLED_APPS。但后来我得到了:

  

django.db.utils.OperationalError:没有这样的表:tests_mytestmodel

3. 我见过this in the docs关于在测试中隔离模型注册的问题。所以我尝试将模型移到tests/settings.py

tests/fields/tests.py

但这仍然让我:

  

django.db.utils.OperationalError:没有这样的表:tests_mytestmodel

我已经尝试查看许多提供自定义字段的其他Django项目的测试,但看不到我所缺少的(显然)使用模型进行测试。

听起来,某种程度上,需要为这些只在测试中使用的模型进行迁移......是吗?怎么样?或其他什么?

1 个答案:

答案 0 :(得分:1)

由于您的测试应用程序位于嵌套文件夹中,您需要在INSTALLED_APPS而不是父文件夹中指定它的完整路径,例如:

INSTALLED_APPS = [
    ...,
    "tests.fields"
]