Python3 如何mock super方法

问题描述

最近在使用python3的mock进行unittest时遇到一个问题,有一个api大概如下 

class MyClass(SuperClass)

    def my_method(self):
        super(MyClass, self).my_method()
        something else

想要使用如下代码做mock测试

def test_my_method(self):
    # Given
    my_class = mock.Mock()

    # When
    MyClass.my_method(my_class)

    # Then
    assert something

直接报错如下

TypeError: super(type, obj): obj must be an instance or subtype of type

冷(hu)静(luan)分析

看来super()这个方法不处理一下是不行的,具体为啥不得而知了,也没有研究,后面如果有结论了再来更新

解决方案

虽然不知道为啥会这样,但是还是找到了解决方法,按照如下写case,就没有问题

​@mock.patch("path_to_module.super", mock.Mock())
def test_my_method(self):
    # Given
    my_class = mock.Mock()

    # When
    MyClass.my_method(my_class)

    # Then
    assert something

​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值