更改后Django测试命令失败型号.py到目录结构

2024-04-26 07:14:08 发布

您现在位置:Python中文网/ 问答频道 /正文

这是在Django2.0和Python3.6.5中实现的

我有一个叫posts的应用程序,我改了型号.py到文件夹结构,即创建一个目录模型并移动文件型号.py内部。另请配置uuuu\ init\ uuuuuy.py文件,如下所述。 项目运行正常,但我的测试套件失败。你知道吗

在“我的设置”、“已安装的应用程序”中,我将应用程序设置为:

'myproject.apps.posts.apps.PostsConfig'

我的应用程序配置(发布)/应用程序.py)你知道吗

from django.apps import AppConfig
class PostsConfig(AppConfig):    
    name = 'posts'               
    verbose_name = 'posts'    

我要搬家/型号.py到目录结构。所以我有

posts/models/models.py
posts/models/proxymodels.py
posts/models/__init__.py

在models/\uuuuuinit\uuuuy.py中,我确实按照doc中的说明导入了我的模型

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

如果我只使用app name执行,则不会检测到任何测试

./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

但是我不满意这个,如果我想运行所有的测试,它仍然会失败。你知道吗


Tags: appsinfrompy模型test应用程序manage