我正在编写一个具有自定义模型字段的应用。我想测试那个字段,使用仅在测试中使用的模型,但我很难让模型在测试中工作。
我的一些应用结构是这样的:
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项目的测试,但看不到我所缺少的(显然)使用模型进行测试。
听起来,某种程度上,需要为这些只在测试中使用的模型进行迁移......是吗?怎么样?或其他什么?
答案 0 :(得分:1)
由于您的测试应用程序位于嵌套文件夹中,您需要在INSTALLED_APPS
而不是父文件夹中指定它的完整路径,例如:
INSTALLED_APPS = [
...,
"tests.fields"
]