我最近在我正在开发的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
。我错过了什么或者有其他方法吗?
答案 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()
。