我尝试运行我的测试而没有显示主程序中的任何消息。我只希望显示来自nosetests的详细消息。
例如:
nosetests -v --nologcapture
我主程序中的所有打印输出消息都将消失。
但是,我在主程序中调用的图表(来自matplotlib的plt.show()
)仍会显示。
如何在没有出现matplotlib图表的情况下运行测试?
答案 0 :(得分:6)
我假设你在代码上调用unittests,所以我建议你安装python Mock库。任何将执行plt.show()
函数的测试都应该模拟它基本上什么都不做。
以下是您的单元测试中的想法的一个粗略示例:
from mock import patch
... unittest boiler plate stuff ...
@patch("matplotlib.pyplot.show")
def testMyCode(self, mock_show):
mock_show.return_value = None #probably not necessary here in your case
... rest of test code ...
patch
函数将使用这个新的mock_show
覆盖正常的show函数,您可以将其命名为任何内容。这应该基本上使节目现在在你的测试中什么都不做,而不是让图表显示出来。