gpt4 book ai didi

python - Django + 毒素 : Apps aren't loaded yet

转载 作者:行者123 更新时间:2023-11-28 20:25:58 34 4
gpt4 key购买 nike

我正在迁移 Django 项目以使用 Tox 和 pytest。运行 tox 时我得到以下信息。

_________________________________________ ERROR collecting fixtureless/tests/test_django_project/test_app/tests/test_factory.py _________________________________________
fixtureless/tests/test_django_project/test_app/tests/test_factory.py:10: in <module>
from test_app.models import ModelOne, ModelTwo
fixtureless/tests/test_django_project/test_app/models.py:11: in <module>
class ModelOne(models.Model):
.tox/py36-django21/lib/python3.6/site-packages/django/db/models/base.py:87: in __new__
app_config = apps.get_containing_app_config(module)
.tox/py36-django21/lib/python3.6/site-packages/django/apps/registry.py:249: in get_containing_app_config
self.check_apps_ready()
.tox/py36-django21/lib/python3.6/site-packages/django/apps/registry.py:132: in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
E django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

这是我的 tox 文件。

[tox]
skipsdist = true
envlist =
py{36,37}-django21,
py{36,37}-django22,

# Add environment to use the default python3 installation
[testenv]
setenv =
PYTHONDONTWRITEBYTECODE=1
PYTHONPATH = {toxinidir}:{toxinidir}/fixtureless/tests/test_django_project
DJANGO_SETTINGS_MODULE = settings.postgres
deps =
pillow
psycopg2
pytest
django21: Django>=2.1,<2.2
django22: Django>=2.2,<2.3
commands = pytest

就像 django.setup() 没有被调用之类的。我对毒素还很陌生。任何帮助将不胜感激。

这是一个开源项目 (django-fixtureless),我已经使用概述的说明成功运行了 Django 测试套件 here .

最佳答案

Django 不知道如何运行 pytest 风格的测试函数。 Plain pytest 也不提供 django 集成。你也可以

  • 编写自定义测试运行程序(一个最小示例):

    # myapp/runner.py

    class PytestRunner:
    def run_tests(self, test_labels):
    import pytest
    return pytest.main(test_labels)

    并将您的应用配置为使用它而不是默认的 DiscoverRunner:

    # myapp/settings.py
    TEST_RUNNER = 'myapp.runner.PytestRunner'

    现在 python manage.py test 将调用 pytest 而不是默认的 unittest

  • 或者使用 pytest-django插入。将其添加到 deps:

    deps =
    ...
    pytest
    pytest-django
    ...

    这本身不提供与 manage.py test 的集成,但您将能够像往常一样通过 pytest 调用测试:

    $ pytest --ds=myapp.settings
    ...

    该插件还提供了许多重新实现 Django 测试助手(如 RequestFactoryClient 等)的有用装置,因此您可以完成 unittest< 的完整移植 风格的测试类到 pytest 风格的测试函数。引用pytest-django docs有关配置详细信息和代码示例。

关于python - Django + 毒素 : Apps aren't loaded yet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57536236/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com