首页 > 解决方案 > 如何在测试中为多个功能重用相同的模拟

问题描述

我有一个测试文件,我在其中为每个函数重用相同的模拟。

@mock.patch.object(...)
def xyz(mock_xyz):
    mock_xyz.side_effect = lambda x, y: None
    ....

@mock.patch.object(...)
def abc(mock_xyz):
    mock_xyz.side_effect = lambda x, y: None
    ....

@mock.patch.object(...)
def lmn(mock_xyz):
    mock_xyz.side_effect = lambda x, y: None
    ....
.
.
.

如何避免每次都定义模拟?PS:我在示例中只使用了一个模拟,但我在 6 种测试方法中使用了相同的四个模拟。

标签: pythonpandasunit-testingmockingpytest

解决方案


您可以在其中定义它setUp()并使其成为您的TestCase类的成员:

class MyTest(unittest.TestCase):
    def setUp(self):
        self.mock_xyz = mock.patch.object(...)
        self.mock_xyz.side_effect = lambda x, y: None

    def xyz(self):
        with self.mock_xyz:
            # Do test stuff
        ....

推荐阅读