亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在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 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號