我使用标准的python日志记录模块。当我调用python manage.py test
时,我想在运行所有测试之前禁用日志记录。是否有信号或其他类型的钩子我可以用来调用logging.disable?或者是否有其他方法可以在python manage.py test
运行时禁用日志记录?
答案 0 :(得分:12)
答案 1 :(得分:9)
作为一种简单的替代方法,您可以在设置文件中运行测试时禁用日志记录,如下所示:
if 'test' in sys.argv:
logger.removeHandler(handler)
logger.setLevel(logging.ERROR)
答案 2 :(得分:6)
我用过的最简单的事情:
import logging
class MyTestClass(TestCase):
def setUp(self):
logging.disable(logging.CRITICAL)
这不需要编辑,修补,额外安装等。所有日志记录都完全关闭。
答案 3 :(得分:4)
我更喜欢使用单独的settings_test.py运行测试,在那里我可以删除不必要的应用程序,中间件和其他我在测试期间不需要的东西。我也可以通过这种方式禁用日志输出:
from settings import *
import logging
# direct all logging output to nowhere
class NullHandler(logging.Handler):
def emit(self, record):
pass
logging.getLogger().addHandler(NullHandler())
答案 4 :(得分:2)
我所知道的唯一方法是编辑manage.py
本身...当然不是很优雅,但至少应该让你到达你需要的地方。
答案 5 :(得分:1)
我修补test_extensions也是这样做的。
答案 6 :(得分:0)
如果您使用的是django-nose,那么您可以将以下代码段添加到settings.py
文件中,以便在运行./manage.py test
时禁用日志记录输出
NOSE_ARGS = [
'--nologcapture'
]