第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

python模擬類屬性不可訪問

python模擬類屬性不可訪問

白板的微信 2021-11-09 20:32:13
模擬類對象時,我無法訪問它的屬性。我已經(jīng)閱讀了很多文檔,但我是模擬新手,沒有看到這段代碼的問題。我希望 x 和 y 返回相同的值 1e-15class test_user_data:    scale = 1e-15class test_signal(unittest.TestCase):    @patch('xx.user_data', autospec=test_user_data, spec_set=True)    def test_data(self, mock_user_data):        x = xx.user_data()        y = test_user_data()        print(x.scale)        print(y.scale)但我明白了<NonCallableMagicMock name='user_data().timescale' spec_set='float' id='47213638195072'>1e-15
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

autospec規(guī)范通常用于定義 API。使用 a 時Mock,您幾乎可以調用或訪問其上的任何屬性,它只會讓您使用。不過它會返回另一個模擬對象。


看到這樣的事情:


>>> my_mock = Mock()

>>> my_mock.stuff

<Mock name='mock.stuff' id='139870989908344'>

>>> my_mock.junk()

<Mock name='mock.junk()' id='139870987197912'>

如果我定義了一個規(guī)范,它會說你不能訪問真實類中實際上不存在的東西。像這樣:


>>> my_mock = Mock(spec=xx.user_data)

>>> my_mock.stuff

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "/usr/lib64/python3.4/unittest/mock.py", line 574, in __getattr__

    raise AttributeError("Mock object has no attribute %r" % name)

AttributeError: Mock object has no attribute 'stuff'

>>> my_mock.scale

<Mock name='mock.scale' id='139871128095264'>

因此,上面顯示您無法訪問 Mock 上未在實際user_data類中定義的屬性,因為我使用了 spec。


這解釋了 autospec 的工作原理,但您真正想要的是return_valuearg。繼續(xù)將它添加到您的補丁裝飾器中,您應該一切就緒。它應該是這樣的:


@patch('xx.user_data', autospec=test_user_data, spec_set=True, return_value=test_user_data)



查看完整回答
反對 回復 2021-11-09
  • 1 回答
  • 0 關注
  • 282 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號