該測試是給我的異常問題的API:修補使用Python模擬
我測試的略微簡化的版本:
def test_credit_create_view(self):
""" Can we create cards? """
card_data = {'creditcard_data': 'blah blah blah'}
with patch('apps.users.forms.CustomerAccount.psigate') as psigate:
info = MagicMock()
info.CardInfo.SerialNo = 42
create = MagicMock(return_value=info)
psigate.credit.return_value = create
self.client.post('/make-creditcard-now', card_data)
我試圖模仿看起來像這樣的電話:
psigate.credit().create().CardInfo.SerialNo
在測試中,該調用只返回一個MagicMock對象。
如果我只是看在通話的最後三個節點,我得到正確的結果:
create().CardInfo.SerialNo
收益42
爲什麼不充分調用「psigate.credit() .create().CardInfo.SerialNo'return 42?
CardInfo應該是什麼?一類?如果是這樣,你可以查看[PropertyMock](http://www.voidspace.org.uk/python/mock/mock.html#mock.PropertyMock) – Silfheed
CardInfo是一個lxml.objectify.ObjectifiedElement。我不得不承認我很困惑應該在什麼時候使用PropertyMock。 – LiavK