django - 在 Pycharm 下运行 django 测试记录输出

标签 django unit-testing logging pycharm

在 PyCharm 下使用 django.test.TestCase 运行/调试单个测试时,不会显示logging.logger消息。我尝试按照 How can I see log messages when unit testing in PyCharm? 的建议设置 logging.basicConfig(level=logging.DEBUG)但这也没有帮助。我怀疑这可能是 django 的 TestCase 设置干扰。

在测试设置或运行器配置中是否有其他方法可以打开测试运行的调试日志记录?

我现在在 settings.py 中设置的日志记录是:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': '/var/log/em/mcqueen-dev.log',
            'when': 'midnight',
            'formatter': 'verbose',
        },
    },
    'formatters': {
        'verbose': {
            'format': '%(asctime)s.%(msecs).03d - %(process)d - %(thread)d - %(levelname)8s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s'
        },
        'simple': {
            'format': '%(asctime)s - %(levelname)s %(message)s'
        },
    },
    'loggers': {
        'mcqueen_api': {
            'handlers': ['console', 'file'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG')
        },
        'mcqueen_app': {
            'handlers': ['console', 'file'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG')
        },
        'mcqueen_base': {
            'handlers': ['console', 'file'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG')
        },
    },
}

最佳答案

当我想在 PyCharm 中对 Django 项目进行测试时查看日志时,我会将这段代码放入测试文件中:

import logging
logger = logging.getLogger(__name__)
logging.disable(logging.NOTSET)
logger.setLevel(logging.DEBUG)

虽然运行 Django 测试禁用日志的级别设置得很高(到 50),但降低它(如上面代码中的第 3 行)将导致显示日志(或保存到文件 - 取决于日志处理程序)正在使用)。

关于django - 在 Pycharm 下运行 django 测试记录输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36456827/

相关文章:

jquery - 是否有任何方法或程序可以防止 jQuery 应用除当前类之外的所有相同类?

python - 在django中删除确认

unit-testing - 多次运行 NUnit 测试

unit-testing - dotnet test 仅测试解决方案上的项目

php - Laravel 单元测试依赖注入(inject)

Java 日志记录 : Log4j Version2. x:显示终端客户端调用方的方法(不是中间日志记录帮助程序方法)

python - django更新 View 并传递上下文

java - log4J2 到 slf4j 到 log4j1 生成 "No log4j2 configuration file found"

ruby-on-rails - Rails - 请求的完成时间明显高于 View 和 DB 时间

python - 在我的模型中继承django的默认用户模型