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

是否需要在每个python测试文件中使用django.setup()?,python,django,Python,Django,我通过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

我通过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
测试于18:12开始。。。
/home/guettli/simple21env/bin/python/snap/pycharm community/188/plugins/python ce/helpers/pycharm/_jb_unittest_runner.py——目标simple21.tests.TermTests.test_stru of_sub_term
在/home/guettli/simple21env/src/simple21tree中启动带有参数python-m unittest simple21.tests.TermTests.test的unittests
回溯(最近一次呼叫最后一次):
文件“/snap/pycharm community/188/plugins/python ce/helpers/pycharm/_jb_unittest_runner.py”,第35行,在
main(argv=args,module=None,testRunner=unittestpy.TeamcityTestRunner,buffer=not JB\u DISABLE\u BUFFERING)
文件“/usr/lib/python3.6/unittest/main.py”,第94行,在__
self.parseArgs(argv)
parseArgs中的文件“/usr/lib/python3.6/unittest/main.py”,第141行
self.createTests()
文件“/usr/lib/python3.6/unittest/main.py”,第148行,在createTests中
自我保护模块)
loadTestsFromNames中的文件“/usr/lib/python3.6/unittest/loader.py”,第219行
suites=[self.loadTestsFromName(name,module)表示名称中的名称]
文件“/usr/lib/python3.6/unittest/loader.py”,第219行,在
suites=[self.loadTestsFromName(name,module)表示名称中的名称]
loadTestsFromName中的文件“/usr/lib/python3.6/unittest/loader.py”,第153行
模块=\uuuu导入\uuuu(模块名称)
文件“/home/guettli/simple21env/src/simple21tree/simple21/tests.py”,第7行,在
从…起导入视图
文件“/home/guettli/simple21env/src/simple21tree/simple21/views.py”,第5行,在
从simple21.models导入术语、SearchLog、GlobalConfig
文件“/home/guettli/simple21env/src/simple21tree/simple21/models.py”,第1行,在
从django.contrib.auth.models导入用户
文件“/home/guettli/simple21env/lib/python3.6/site packages/django/contrib/auth/models.py”,第2行,在
从django.contrib.auth.base_user导入AbstractBaseUser、BaseUserManager
文件“/home/guettli/simple21env/lib/python3.6/site packages/django/contrib/auth/base_user.py”,第47行,在
类AbstractBaseUser(models.Model):
文件“/home/guettli/simple21env/lib/python3.6/site packages/django/db/models/base.py”,第107行,在新的__
app\u config=apps.get\u包含app\u config(模块)
文件“/home/guettli/simple21env/lib/python3.6/site packages/django/apps/registry.py”,第252行,在包含应用程序配置的get_中
self.check_apps_ready()
文件“/home/guettli/simple21env/lib/python3.6/site packages/django/apps/registry.py”,第135行,在check\u apps\u ready中
raise AppRegistryNotReady(“应用程序尚未加载。”)
django.core.exceptions.AppRegistryNotReady:尚未加载应用程序。
进程已完成,退出代码为1
空套房
我想我需要打电话

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


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

对于测试用例,您实际上只需要从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测试
是否会出现相同的错误?你在
app\u name/tests.py中写测试吗?

我切换到

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

[pytest]
DJANGO_SETTINGS_MODULE = mysite.settings

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

从命令行运行测试有效。这个问题是关于直接从PyCharm调用一个特定的测试。好的,在PyCharm中,您可以打开
tests.py
,在行号所在的左列,每个测试都应该有一个播放按钮。您可以单击其中的每一个来运行单独的测试。这是一个截图