Django:检查测试时是作为开发还是生产运行?

时间:2017-01-05 01:30:18

标签: django unit-testing django-testing

我使用Django 1.9django.test进行单元测试。

这是我测试signals的代码:

@receiver(post_save, sender=EmailNotification, dispatch_uid="spacegraphy")
def post_save_notification(sender, instance, created, **kwargs):
    if created:
        if settings.DEBUG:
            print("post_save: created!!!")
        else:
            instance.send_notification()

当我在本地运行此应用程序时,它以开发模式运行,显示print(settings.DEBUG)True。 (我在shell_plus

django-extension中进行了检查

但是,当我测试单元测试时,print(settings.DEBUG)会显示False

我不知道为什么会这样。请问有什么想法吗?

1 个答案:

答案 0 :(得分:1)

来自https://docs.djangoproject.com/en/1.10/topics/testing/overview/#other-test-conditions

  

无论配置文件中DEBUG设置的值如何,所有Django测试都以DEBUG = False运行。这是为了确保您观察到的代码输出与生产设置中的输出相匹配。

我建议您以不同的方式编写测试。目的是测试代码在生产中运行的功能,因此不需要检查DEBUG的值。