Python unittest:TestCase类中的Mock函数

时间:2018-07-25 10:56:52

标签: python-3.x unit-testing mocking python-unittest

我的模拟测试功能的方法如下:

from unittest import mock, TestCase
from main import my_function


def my_mock(s):
    if s == 'hello':
        return 'goodbye'
    return my_function(s)


class TestMyFunction(TestCase):
    @mock.patch('my_function', side_effect=MyMock.my_mock)
    def test_my_function(self, mock_get):
        s = 'hello'
        self.assertEqual('goodbye', my_function(s))

这有效。但是,如果我有多个测试,其中my_mock_1个补丁test_my_function_1my_mock_2个补丁test_my_function_2等等,那么模拟定义与测试定义相距甚远,并且代码变得很困难阅读。

有没有办法使模拟定义更接近它们所属的测试?


我尝试过的是

class TestMyFunction(TestCase):
    @staticmethod
    def my_mock_1(s):
        ...

    @mock.patch('my_function', side_effect=my_mock_1)
    def test_my_function_1(self, mock_get):
        ...

    @staticmethod
    def my_mock_2(s):
        ...

    @mock.patch('my_function', side_effect=my_mock_2)
    def test_my_function_2(self, mock_get):
        ...

    ...

但是这失败了,例外 TypeError: 'staticmethod' object is not an iterator

0 个答案:

没有答案