Django单元测试不在Visual Studio测试资源管理器中运行

问题描述 投票:0回答:1

我正在尝试在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'...

有任何想法吗?提前致谢

python django unit-testing visual-studio-2017
1个回答
0
投票

您收到此错误是因为您在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()语句

© www.soinside.com 2019 - 2024. All rights reserved.