gpt4 book ai didi

Django单测迁移

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

我最近在我正在处理的 django 项目中实现了一个可重用的应用程序。为了这个问题,我们称它为 reusable_app。这个应用程序也有一些运行的单元测试,但是,这些测试依赖于 model.py 中测试旁边某处声明的一些基本模型。

/resuable_app
__init__.py
models.py
views.py
urls.py
/tests
__init__.py
tests.py
/simple_app
__init__.py
models.py

现在,模型不会加载到数据库中,除非我在测试配置文件的 INSTALLED_APPS 中指定文件夹。我想知道是否有另一种方法可以实现这一点,而不必在设置文件中公开应用程序?我似乎可以通过 @override_settings 指定应用程序,但迁移没有运行。

例如:

@override_settings(INSTALLED_APPS=['reusable_app'])
class TestReusableApp(TestCase):
def test_something(self):
...

如果 reusable_app 没有在设置模块 INSTALLED_APPS 中指定,这仍然会产生一个 ProgrammingError。我是否遗漏了什么或是否有其他方法?

最佳答案

我认为这里的问题是测试运行器在您使用 @override_settings 添加应用程序之前设置表。

通常情况下,我对可重用应用程序所做的是在“示例”应用程序的上下文中运行测试,其中包含您要测试的应用程序的设置。通常效果很好,因为我将可重用应用程序单独打包。这是一个 example这来 self 过去的一个项目。

但是,如果这不可能,您可以尝试在测试中覆盖 setUp,并在该代码中调用“migrate”命令。例如:

from django.core.management import call_command

@override_settings(INSTALLED_APPS=['reusable_app'])
MyTestCase(TestCase):
def setUp(self):
call_command('migrate', 'reusable_app')

这有点乱,但可能值得一试。根据事情的进展情况,您可能还必须运行 django.setup() .

关于Django单测迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39664698/

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