这是在Django 2.0和python 3.6.5中
我有一个名为posts的应用程序,我将models.py更改为文件夹结构,即创建目录模型并移动了models.py文件insid。还要配置__ init__.py文件,如下所述。 该项目运行正常,但我的测试套件失败。
在我的设置中,已安装的应用程序的应用程序为:
'myproject.apps.posts.apps.PostsConfig'
我的应用程序配置(posts / apps.py)
from django.apps import AppConfig
class PostsConfig(AppConfig):
name = 'posts'
verbose_name = 'posts'
我已将posts / models.py移至目录结构。所以我有
posts/models/models.py
posts/models/proxymodels.py
posts/models/__init__.py
内部模型/ __ init__.py我确实按照文档中的说明导入了模型
from .models import Job
from .proxys import ActiveJob
该项目运行良好,但是在尝试运行测试时:
python manage.py test
我遇到此错误:
RuntimeError: Model class tektank.apps.posts.models.models.Job doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
该模型是一个普通模型,具有字段,没有其他扩展。问题是,如果我在meta中声明
class Meta:
app_label = 'posts'
我遇到以下错误:
RuntimeError: Conflicting 'job' models in application 'posts': <class 'posts.models.models.Job'> and <class 'tektank.apps.posts.models.models.Job'>.
注意:如果使用pytest,则运行命令:
pytest
运行正常
更新
如果我执行相同的错误:
./manage.py test myproject/apps/posts
如果仅使用应用名称执行,则不会检测到任何测试
./manage.py test posts
Ran 0 tests in 0.000s
OK
如果我放置tests文件夹的路径,则可以正常运行。
./manage.py test myproject/apps/posts/tests
Ran 2 tests in 0.074s
OK
./manage.py test posts.tests
Ran 2 tests in 0.103s
OK
但是对此我不满意,如果我想运行所有测试,它将仍然失败。