我正在尝试在Visual Studio中实现我的Django(1.11.7,Python 3.6)单元测试。当我在终端中运行它们(python manage.py test)时,它们运行正常,而当从VS Test Explorer执行时,它失败并显示错误:
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
我已经读过较新的Django版本需要调用一个显式的django.setup(),所以我试图将它添加到setUpClass(cls)和setUpTestData(cls)。
import django
from datamodel.models import Engagement, BusinessUnit
from django.contrib.auth.models import User
from django.test import TestCase, Client
class TestViewRPA(TestCase):
@classmethod
def setUpClass(cls):
super(TestViewRPA, cls).setUpClass()
django.setup()
@classmethod
def setUpTestData(cls):
super(TestViewRPA, cls).setUpTestData()
django.setup()
User.objects.create_user('dummyuser')
eng = Engagement.objects.create(name = 'Test Client', owner=User.objects.get(username='dummyuser'))
businessunit = BusinessUnit.objects.create(name = 'Business Unit', engagement=eng)
def test_get_industry_segment1(self):
businessunit = BusinessUnit.objects.get(name = 'Business Unit')
c = Client()
response = c.get('/rpa/%d' % businessunit.id)
self.assertContains(response, 'id":1,"businessunit_set":[{"id":1,', status_code=200)
从CLI执行的结果
...>env\Scripts\python.exe manage.py test app
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
----------------------------------------------------------------------
Ran 3 tests in 0.028s
OK
Destroying test database for alias 'default'...
有任何想法吗?提前致谢
您收到此错误是因为您在django.setup()之前从django.contrib.auth.models导入用户
你已经导入了django所以删除
from django.contrib.auth.models import User
而不是
User.objects.create_user('dummyuser')
像这样使用django.contrib.auth.models
django.contrib.auth.models.User.objects.create_user('dummyuser')
要么
如果你想保持一切简单,只需在从django.contrib.auth.models导入任何内容之前添加django.setup()语句