我正在尝试模拟一个在其中使用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()
添加回答
举报
0/150
提交
取消