是否需要在每个python测试文件中使用Django.setup()?

2024-10-04 01:26:51 发布

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

我通过PyCharm(ctrl-shift-F10)执行一个特定的测试

我得到这个错误:

Testing started at 18:12 ...
/home/guettli/simple21env/bin/python /snap/pycharm-community/188/plugins/python-ce/helpers/pycharm/_jb_unittest_runner.py --target simple21.tests.TermTests.test_str_of_sub_term
Launching unittests with arguments python -m unittest simple21.tests.TermTests.test_str_of_sub_term in /home/guettli/simple21env/src/simple21tree

Traceback (most recent call last):
  File "/snap/pycharm-community/188/plugins/python-ce/helpers/pycharm/_jb_unittest_runner.py", line 35, in <module>
    main(argv=args, module=None, testRunner=unittestpy.TeamcityTestRunner, buffer=not JB_DISABLE_BUFFERING)
  File "/usr/lib/python3.6/unittest/main.py", line 94, in __init__
    self.parseArgs(argv)
  File "/usr/lib/python3.6/unittest/main.py", line 141, in parseArgs
    self.createTests()
  File "/usr/lib/python3.6/unittest/main.py", line 148, in createTests
    self.module)
  File "/usr/lib/python3.6/unittest/loader.py", line 219, in loadTestsFromNames
    suites = [self.loadTestsFromName(name, module) for name in names]
  File "/usr/lib/python3.6/unittest/loader.py", line 219, in <listcomp>
    suites = [self.loadTestsFromName(name, module) for name in names]
  File "/usr/lib/python3.6/unittest/loader.py", line 153, in loadTestsFromName
    module = __import__(module_name)
  File "/home/guettli/simple21env/src/simple21tree/simple21/tests.py", line 7, in <module>
    from . import views
  File "/home/guettli/simple21env/src/simple21tree/simple21/views.py", line 5, in <module>
    from simple21.models import Term, SearchLog, GlobalConfig
  File "/home/guettli/simple21env/src/simple21tree/simple21/models.py", line 1, in <module>
    from django.contrib.auth.models import User
  File "/home/guettli/simple21env/lib/python3.6/site-packages/django/contrib/auth/models.py", line 2, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "/home/guettli/simple21env/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 47, in <module>
    class AbstractBaseUser(models.Model):
  File "/home/guettli/simple21env/lib/python3.6/site-packages/django/db/models/base.py", line 107, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/home/guettli/simple21env/lib/python3.6/site-packages/django/apps/registry.py", line 252, in get_containing_app_config
    self.check_apps_ready()
  File "/home/guettli/simple21env/lib/python3.6/site-packages/django/apps/registry.py", line 135, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

Process finished with exit code 1

Empty suite

我想我需要打电话给django.setup()

有没有办法避免在每个python测试文件中写入django.setup()

从命令行运行测试是有效的。这个问题是关于直接从PyCharm调用一个特定的测试


Tags: djangoinpyselfhomemodelslibusr
2条回答

我切换到pytest-django

如果您像这样配置pytest.ini,它可以正常工作:

[pytest]
DJANGO_SETTINGS_MODULE = mysite.settings

异常“django.core.exceptions.AppRegistryNotReady:尚未加载应用程序”现在已消失

对于测试用例,您实际上只需要导入from django.test import TestCase 您不需要运行.setup()

下面是一个最小的测试脚本

from django.test import TestCase

class UnitTestCase(TestCase):

    def test_home_homepage_template(self):
        response = self.client.get('/')
        self.assertTemplateUsed(response, 'my_app/home.html')

如果运行python manage.py test,是否会出现相同的错误?你是在用app_name/tests.py写测试吗

相关问题 更多 >