gpt4 book ai didi

Django 为不在 INSTALLED_APPS 中的应用程序执行测试

转载 作者:行者123 更新时间:2023-12-04 01:37:24 26 4
gpt4 key购买 nike

在我的 Django 项目下有一些应用程序,它们都有单元测试。我现在正在工作的其中一个应该只包含在开发/阶段环境中,所以我使用环境变量启用它。
当这个变量存在时,它被添加到 INSTALLED_APPS 并且它工作得很好,问题是 Django 正在执行这个应用程序的测试,即使它不在 INSTALLED_APPS 中,并且它失败并显示以下消息:

ImportError: Failed to import test module: debug.tests.unit.test_services`

...(traceback information)...

RuntimeError: Model class debug.models.Email doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.


当我定义 app_labelclass Meta这个应用程序中的模型错误是不同的,它说它找不到表,我认为这是因为应用程序不在 INSTALLED_APPS 中,所以它的迁移没有执行。

OperationalError: no such table: debug_email


我不确定为什么 Django 为所有应用程序执行测试,但不是迁移。
我是否从 Django 配置中遗漏了一些用于测试的东西?

最佳答案

https://docs.python.org/3/library/unittest.html#unittest.TestLoader.discover说:

If load_tests exists then discovery does not recurse into the package, load_tests is responsible for loading all tests in the package.



所以在最低 __init__.py在您并不总是想要运行的应用程序中:
from django.apps import apps

def load_tests(loader, tests, pattern):
from django.conf import settings

if apps.is_installed("your_dev_app"):
pass # Actually load the tests

关于Django 为不在 INSTALLED_APPS 中的应用程序执行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49117482/

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