我正在嘗試模擬一個在其中使用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
提交
取消
