我在 Pycharm
上遇到问题。
当我运行测试时,我无法在 stdout/stderr
上显示 django.db.backends
日志。
当我使用 runserver
时,它就像一个魅力。
您是否有任何简单的解决方案来在我的测试
的标准输出上显示所有带有level=DEBUG
的日志?
更多信息:
- 我的
DEBUG
在我的设置中设置为True
- 我使用
SOUTH_TESTS_MIGRATE = False
和SKIP_SOUTH_TESTS = True
谢谢
最佳答案
首先,django 在 UnitTest ( Writing and running tests in Django ) 期间将 settings.DEBUG 强制设置为 False。
因此,您应该使用 override_settings
装饰器激活临时此设置:
来自 django 文档:
from django.test import TestCase
from django.test.utils import override_settings
class LoginTestCase(TestCase):
@override_settings(LOGIN_URL='/other/login/')
def test_login(self):
response = self.client.get('/sekrit/')
self.assertRedirects(response, '/other/login/?next=/sekrit/')
但是阅读django源码,也可以设置connection
对象的use_debug_cursor
属性。如果设置为 True,将使用 CursorDebugWrapper
并显示查询日志。
从 django 源代码中提取(django/db/backends/__init__.py
):
class BaseDatabaseWrapper(object):
# [...]
def cursor(self):
self.validate_thread_sharing()
if (self.use_debug_cursor or
(self.use_debug_cursor is None and settings.DEBUG)):
cursor = self.make_debug_cursor(self._cursor())
else:
cursor = util.CursorWrapper(self._cursor(), self)
return cursor
def make_debug_cursor(self, cursor):
return util.CursorDebugWrapper(cursor, self)
关于python - 在 pycharm 的标准输出中查看 django.db.backends 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476632/