我正在Django中编写一个应用程序,我试图做一些单元测试,但我似乎找不到为什么测试失败,这是测试页面:
import re
from django.test import TestCase
from django.urls import reverse
from . import models
class BasicTests(TestCase):
def test_firstname(self):
print('test11')
acc = models.Accounts()
acc.first_name = 'Moran'
self.assertTrue(len(acc.id) <= 9, 'Check name is less than 50 digits long')
self.assertFalse(len(acc.id) > 50, 'Check name is less than 50 digits long')
我得到的错误是:
运行时错误:模型类DoggieSitter. accounts. models. Accounts没有声明显式的app_label,也不在INSTALLED_APPS的应用程序中
那是我安装的应用程序:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts'
]
1条答案
按热度按时间ddrv8njm1#
TLDR;:尝试将上面的第4行更改为显式导入,例如
from DoggieSitter.accounts import models
每当运行
tests.py
有from .models import ModelName
这样的相对导入的测试时,我都会遇到这个问题。在搜索了大约一个小时后,我偶然发现了this answer to exactly the tutorial I was following。在我的例子中,我尝试了
from .models import Recipe
。我的项目结构如下所示,所以我改为from apps.recipes.models import Recipe
,现在测试运行良好。这是一个遗憾,因为我宁愿继续使用相对导入。PS -另一个更明确的方式,似乎也工作是:
......但我想我更喜欢更简单的显式import语句。