【问题标题】:print statement is not working in python proboscisprint 语句在 python proboscis 中不起作用
【发布时间】:2012-10-10 16:39:06
【问题描述】:

我们开始使用鼻子框架在 python 中编写我们的功能和单元测试用例。我们在编写这些测试时开始学习 python。由于我们的测试类/函数之间有很多依赖关系,我们决定在鼻子上使用proboscis framework 来控制执行顺序。

我们的测试中有很多“打印”语句,而 proboscis 似乎忽略了这些!测试以预期的顺序运行并测试它们,但没有将我们的打印语句数据打印到控制台。知道我们在这里缺少什么吗?

顺便说一句,一旦我们转移到 proboscis 并使用 @test 装饰所有类及其成员函数,我们就停止从“unittest.TestCase”派生类。

【问题讨论】:

  • 欢迎来到 Stack Overflow!我们鼓励您research your questions。如果您有 tried something already,请将其添加到问题中 - 如果没有,请先研究并尝试您的问题,然后再回来。
  • @Tichodroma:我认为很明显他们已经尝试了一些东西;在proboscis框架下的测试中使用print...
  • nose 捕获标准输出并仅在测试失败时显示它。您使用print 的动机是什么?如果您使用print 进行调试,您是否考虑过logging 模块?
  • 对我们来说,它看起来像是成功/失败测试中的所有打印语句!我们的一些测试是从一个文件中读取多组输入,因此我们正在打印每个输入集的结果以及其他一些基本数据,如时间、输入大小等。我们还没有研究过日志记录模块,但一定要检查一下.感谢您提及它...

标签: python unit-testing functional-testing nose


【解决方案1】:

注意:根据 Proboscis documentation“未使用的参数会传递给 Nose 或 unittest 模块”,因此以下应该通过将nosetests 替换为python run_tests.py 来应用于Proboscis

正如@Wooble 在他的评论中提到的那样,默认情况下nose 捕获stdout 并且只在失败的测试中显示它。您可以使用 nosetests -s--nocapture 开关覆盖此行为:

$ nosetests --nocapture

就像@Wooble 在他的评论中提到的那样,我建议使用logging 模块而不是print。然后您只需将nosetests 传递给-l DEBUG--debug=DEBUG 开关,其中DEBUG 将替换为您要显示的记录器名称的逗号分隔列表,以启用从您的记录输出显示模块:

$ nosetests --debug=your-logger-name

【讨论】:

  • 你们都对,鼻子只显示失败的测试。我们在默认情况下使用 -s -v 选项和鼻子命令来报告所有内容。现在我们倾向于使用日志记录模块。感谢你们俩对我们的帮助。
猜你喜欢
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多