如何在测试中为多个函数重用相同的模拟

Kes*_*ani 6 python unit-testing mocking pytest pandas

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

@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
    ....
.
.
.
Run Code Online (Sandbox Code Playgroud)

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

who*_*ski 0

您可以在其中定义它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
        ....
Run Code Online (Sandbox Code Playgroud)