Django单测试迁移

时间:2016-09-23 15:39:27

标签: django testing

我最近在我正在开发的django项目中实现了一个可重用的应用程序。为了这个问题,我们称之为.bottom。这个应用程序还有一些运行的单元测试,但是,这些测试依赖于在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。我错过了什么或者有其他方法吗?

1 个答案:

答案 0 :(得分:2)

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

通常,我对可重用应用程序的操作是在“示例”应用程序的上下文中运行测试,其中的设置包括您要测试的应用程序。通常效果很好,因为我分别打包了可重用的应用程序。以下是我过去项目的example

但是,如果无法做到这一点,您可能会尝试在测试中覆盖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()