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

我正在尝试模拟一个在其中使用ac扩展类的类函数,但是我得到了TypeError: can't set attributes of built-in/extension type 'y.cExtensionClass'。code.py是一个遗留代码,我真的不希望对其进行更改。有什么建议吗?


code.py:


from x.y import cExtensionClass


class CodeClass():


    @staticmethod

    def code_function():

         cExtensionClass().cExtensionFunc()

test.py:


import code

from x.y import cExtensionClass


class 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()


狐的传说
浏览 170回答 3
3回答

隔江千里

修补程序code.cExtensionClass(不是x.y.cExtensionClass)。做import code代替from code cExtensionClass。import unittestfrom mock import patch, Mockimport codeclass 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()

米琪卡哇伊

替换整个cExtensionClass对象,而不是仅替换单个方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python