我想断言matplotlib.pyplot.show在我的类的某个方法中被调用,但我不希望该方法在单元测试期间实际调用show()并在外部窗口上绘图。不管我如何模仿matplotlib,它似乎都不起作用。我将在下面列出代码的重要部分:#In Model Test Class:
import Model
import matplotlib
import unittest
from unittest.mock import patch
class Model_Test(unittest.TestCase):
@patch('matplotlib.pyplot')
def test_plot_data(self, mock_pyplot):
model = Model()
model.plot_data()
mock_pyplot.show.assert_called_once()
^{pr2}$
我还尝试为mock设置一个返回值_绘图.显示. 当我使用调试器时,Model类中的matplotlib不会用模拟对象传播,因此我不确定如何模拟matplotlib模块或其成员函数。是否可以模拟matplotlib?在
对于如何在单元测试中正确模拟matplotlib(主要是为了防止显示图)有什么想法?在
编辑:我把补丁装饰改成
@patch('matplotlib.pyplot.show'),
但我仍然不确定为什么这是有效的,而我以前的尝试没有