小编eld*_*evy的帖子

我可以在python中修补静态方法吗?

我在python中有一个包含静态方法的类.我想要mock.patch它,看看它是否被调用.当我尝试这样做时,我收到一个错误: AttributeError: path.to.A does not have the attribute 'foo'

我的设置可以简化为:

class A:
    @staticMethod
    def foo():
        bla bla
Run Code Online (Sandbox Code Playgroud)

现在测试代码失败并出现错误:

def test():
    with mock.patch.object("A", "foo") as mock_helper:
        mock_helper.return_value = ""
        A.some_other_static_function_that_could_call_foo()
        assert mock_helper.call_count == 1
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
2
解决办法
6458
查看次数

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

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

python patch python-2.7

4
推荐指数
1
解决办法
1153
查看次数

标签 统计

python ×2

patch ×1

python-2.7 ×1