如何禁用Django迁移调试日志记录?

2024-10-01 09:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

非常类似于lafagundes question about south migration debug logging,只是我没有使用south—我使用的是普通的django1.7迁移。我还使用django-nose测试运行程序。在

当我运行manage.py test时,没有捕获调试日志记录输出:

(codesy)lcrouch:codesy lcrouch$ ./manage.py test
nosetests --verbosity=1
Creating test database for alias 'default'...
......E...............................
======================================================================
ERROR: test_return_state (auctions.tests.utils_tests.IssueStateTest)
----------------------------------------------------------------------

当我运行单个测试模块时,例如./manage.py test auctions.tests.utils_tests,调试日志输出包括Django迁移中涉及的所有django.db.backends.schema: DEBUG行:

^{pr2}$

这使得我们很难回到实际的失败中去。在

如何禁用此输出?或者在django或鼻子水平?在


Tags: djangopydebugtestmanagetestsutilsmigration
2条回答

要快速删除日志消息,可以使用以下命令运行:

./manage.py test nologcapture

这些消息被nose logcapture plugin捕获,它有额外的微调选项。但是,django-nose有一个old issue,它可能会阻止您从命令行使用其中的许多。预定在milestone v1.4.2,但那已经过期一个月了。您可以使用.nosercnose.cfg文件来解决这些问题,格式请参见nose docs。在

如果您不介意在测试中禁用迁移,可以通过将以下内容添加到设置.py公司名称:

TESTING = 'test' in sys.argv

if TESTING:
    class DisableMigrations(object):
        def __contains__(self, item):
            return True

        def __getitem__(self, item):
            return "notmigrations"

    MIGRATION_MODULES = DisableMigrations() 

这将只需一次性创建数据库,而不是逐步完成每次迁移。在

如果您想让迁移在测试中运行,您可以通过更新日志设置来删除消息。在

^{pr2}$

相关问题 更多 >