将models.py更改为目录结构后,Django测试命令失败

时间:2019-01-11 04:08:00

标签: python django

这是在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

但是对此我不满意,如果我想运行所有测试,它将仍然失败。

0 个答案:

没有答案