补丁装饰器 - 没有参数函数的副作用

eld*_*evy 4 python patch python-2.7

我想装饰我的测试来修补特定的功能。我对将模拟对象作为函数的参数不感兴趣。在此示例中,我希望能够省略mock_my_foo参数:

def my_foo(self):
    print "My side_effect"

class SampleTest(TestCase):
   @patch('some_module.foo', side_effect=my_foo)
   def test_something(self, mock_my_foo):
      pass
Run Code Online (Sandbox Code Playgroud)

我正在使用 python 2.7

eld*_*evy 5

我可以通过指定newpatch 的参数并为其分配一个已设置 side_effect 的模拟对象来完成此操作:

def my_foo(self):
    print "My side_effect"

class SampleTest(TestCase):
    @patch('some_module.foo', new=Mock(side_effect=my_foo))
    def test_something(self):
        pass
Run Code Online (Sandbox Code Playgroud)