如何运行nosetests而不显示我的matplotlib图表?

时间:2014-06-21 16:34:24

标签: python unit-testing tdd nose

我尝试运行我的测试而没有显示主程序中的任何消息。我只希望显示来自nosetests的详细消息。

例如:

  

nosetests -v --nologcapture

我主程序中的所有打印输出消息都将消失。

但是,我在主程序中调用的图表(来自matplotlib的plt.show())仍会显示。

如何在没有出现matplotlib图表的情况下运行测试?

1 个答案:

答案 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函数,您可以将其命名为任何内容。这应该基本上使节目现在在你的测试中什么都不做,而不是让图表显示出来。