Skip to main content
 首页 » 编程设计

python之在 Django 管理命令期间显示单行进度并在测试期间禁用它

2025年04月02日28sharpest

我有一些 Django 管理命令调用其他类中的方法来执行各种任务,比如从外部 API 获取数据。

在这些方法中,我输出一行显示进度,例如:

print('Fetched %d of %d' % (n, total) + ' '*30, end='\r') 

工作正常,但是当我运行我的测试时,它被打印出来并搞砸了 .....E....F... 显示。我可以在所有测试中修补 print,但这看起来很笨拙。

那么 (a) 我是否应该以其他方式输出该进度线,和/或 (b) 是否有更好的方法在运行测试时抑制该输出?

请您参考如下方法:

第一步实际上是摆脱打印语句并将其替换为logging .

使用 django 日志记录,您可以获得比使用打印更多的控制权,而且设置起来也不难。其中两个关键特性是您可以控制日志消息是转到文件还是控制台。您还可以根据 DEBUG 标志进一步微调它。

您可能需要此消息仅出现在您的开发服务器上,而不出现在生产服务器上。所以日志记录可以帮助你。更重要的是,当测试运行时,它会关闭调试标志,这样您的 .....E....F 就不会困惑。