首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用托管= False在Django测试期间创建表?

如何使用托管= False在Django测试期间创建表?
EN

Stack Overflow用户
提问于 2015-03-02 00:02:25
回答 2查看 678关注 0票数 1

来自官方文件

对于涉及managed=False模型的测试,您需要确保创建正确的表作为测试设置的一部分。

我不知道如何创建表作为测试设置的一部分。我找到了这个问题,被接受的答案对我不起作用。我认为这是因为迁移文件。配置在迁移文件中,更改值“动态”没有任何效果。

如何在Django 1.7+中解决这个问题?

EN

Stack Overflow用户

发布于 2015-03-02 00:21:01

我认为在Django 1.7+中应该是类似的。当您要运行测试时,您应该使用Django管理这些模型(只是为了测试目的)。这种转换应该在创建表之前完成,Django允许在您的TEST_RUNNER中提供一个类实例来设置settings.py

代码语言:javascript
运行
复制
# settings_test.py
TEST_RUNNER = 'utils.test_runner.ManagedModelTestRunner'

# test_runner.py
from django.test.runner import DiscoverRunner

class ManagedModelTestRunner(DiscoverRunner):
    """
    Test runner that automatically makes all unmanaged models in your Django
    project managed for the duration of the test run, so that one doesn't need
    to execute the SQL manually to create them.
    """  
    def setup_test_environment(self, *args, **kwargs):
        from django.db.models.loading import get_models
        super(ManagedModelTestRunner, self).setup_test_environment(*args,
                                                                   **kwargs)
        self.unmanaged_models = [m for m in get_models(only_installed=False)
                                 if not m._meta.managed]
        for m in self.unmanaged_models:
            m._meta.managed = True

    def teardown_test_environment(self, *args, **kwargs):
        super(ManagedModelTestRunner, self).teardown_test_environment(*args, **kwargs)
        # reset unmanaged models
        for m in self.unmanaged_models:
            m._meta.managed = False
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28800814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档