【问题标题】:Django - Print only errors when running all testsDjango - 运行所有测试时仅打印错误
【发布时间】:2018-10-02 11:12:33
【问题描述】:

我们正在使用 python - Django 1.10。我们有超过 1000 个测试。在运行所有测试时,我们将大量日志写入标准输出。 它主要影响部署——我们正在创建一个 docker 实例并运行我们所有的测试(使用 python manage.py 测试)。 我想在运行所有测试时以某种方式只打印错误。 有没有办法做这样的事情?

【问题讨论】:

  • 您的settings.py 中有一个LOGGING 部分来控制您的应用程序的日志记录吗?这通常决定了您设置为记录的应用程序,以及它们记录的级别。
  • 我愿意。我们设置了一个记录器来写入控制台和文件。问题是如何让这个记录器在运行所有测试时只写错误。

标签: python django testing stdout


【解决方案1】:

也许创建一个特定于测试的test_settings.py,在运行测试时用ERROR 覆盖日志级别。

例如,如果主 settings.py 包含:

LOGGING = {
    ...
    'loggers': {
        'myapp': {
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
        }
    }
}

然后您可以创建一个覆盖日志级别的test_settings.py

from settings import *

LOGGING['loggers']['myapp']['level'] = 'ERROR'

然后在运行测试时指定test_settings

python manage.py test --settings test_settings

【讨论】:

  • 感谢@Will Keeling。我收到“没有模块名称 test_settings”。我错过了什么吗? (我在 out settings.py 旁边添加了文件)
  • @user2880391 你应该提供完全限定的包名,所以--settings app.package.test_settings。对不起,我的回答应该更清楚。
  • 谢谢。我认为这是个好主意,尽管在您回答之后我决定使用日志级别作为环境变量并在用于运行测试的脚本中将其设置为“错误”。
猜你喜欢
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多