我想断言 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()
Run Code Online (Sandbox Code Playgroud)
#In Model Class:
import matplotlib.pyplot as plt
import pandas as pd
class Model(object):
... # (__init__ and other methods)
def plot_data(self):
self.dataframe.plot(y=self.dataframe.columns, subplots=False, figsize=(15, 8), fontsize=12)
plt.title('Data for Model Version: ' + self.version, fontsize=20)
plt.xlabel('timestamp', fontsize=12)
plt.ylabel('value', fontsize=12)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我还尝试为 mock_plot.show 设置返回值。当我使用调试器时,模型类中的 matplotlib 不会与 Mock 对象一起传播,所以我不确定如何模拟 matplotlib 模块或其成员函数。是否可以模拟 matplotlib? …