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

标签 python django testing

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

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

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

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

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

最佳答案

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

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

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

关于python - 在 Django 管理命令期间显示单行进度并在测试期间禁用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37079079/

相关文章:

Django inlineformsetfactory - 它有什么用?

python - 无法在django python中提供静态文件,如css、js

javascript - 同时模拟 firebase 作为对象和函数的身份验证?

java - 如何使用不同的包管理 Selenium 项目代码(如页面对象模型/关键字驱动框架)

python - JSON 编码 Python 类列表

python - Sklearn 混淆矩阵 : How to get the blue color

python - 使用 'for' 或 'if' 条件在 Python 中创建 CSV 文件

django - Django 1.10 中的 'django.core.context_processors.request' 去哪儿了?

selenium - 测试用例只适用于一个循环

python - 有没有办法在Python中复制任意生成器?