Django 如何在单元测试的时候也打印 SQL 语句

在非单元测试的时候可以通过如下配置,让 Django 输出 ORM 操作对应的 SQL 语句。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}

但是上述的配置到了单元测试的时候就不打印 SQL 了,请问应该如何做才能的单元测试中也输出 ORM 操作对应的 SQL 语句呢?

阅读 3.4k
2 个回答

from django.db import connection
print(connection.queries[-1])

单元测试脚本加入
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
django.setup()
应该也可以吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题