为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中,如何模拟ac扩展类?

在Python中,如何模拟ac扩展类?

狐的传说 2021-03-30 12:15:11
我正在尝试模拟一个在其中使用ac扩展类的类函数,但是我得到了TypeError: can't set attributes of built-in/extension type 'y.cExtensionClass'。code.py是一个遗留代码,我真的不希望对其进行更改。有什么建议吗?code.py:from x.y import cExtensionClassclass CodeClass():    @staticmethod    def code_function():         cExtensionClass().cExtensionFunc()test.py:import codefrom x.y import cExtensionClassclass test(unittest.TestCase):    def test_code_function(self)        with patch.object(cExtensionClass, 'cExtensionFunc') as cExtensionFuncMock:               cExtensionFuncMock.return_value = None            code.CodeClass.code_function()            cExtensionFuncMock.assert_called_with()
查看完整描述

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

修补程序code.cExtensionClass(不是x.y.cExtensionClass)。做import code代替from code cExtensionClass。


import unittest


from mock import patch, Mock


import code


class test(unittest.TestCase):

    def test_code_function(self):

        with patch('code.cExtensionClass') as m:

            m.return_value.cExtensionFunc = func = Mock()

            code.CodeClass.code_function()

            func.assert_called_with()


    #@patch('code.cExtensionClass')

    #def test_code_function(self, m):

    #    m.return_value.cExtensionFunc = func = Mock()

    #    code.CodeClass.code_function()

    #    func.assert_called_with()


查看完整回答
反对 回复 2021-04-05
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

替换整个cExtensionClass对象,而不是仅替换单个方法。


查看完整回答
反对 回复 2021-04-05
  • 3 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号