[英]Python magic method for variable being accessed?
我正在尋找一個類似於__get__
方法的__get__
方法,但在我的情況下,變量不在另一個類中,我想要類似的東西:
class A(object):
def __similar_to_get__(self):
print 'called'
return self
a = A()
b = a
>>> 'called'
可能嗎?
我問這個的原因是,我正在使用python模擬庫,假設我正在測試的函數使用URI屬性,我想模擬它以在后續調用中返回不同的值。 例如:
class WebService(obj):
URI = 'http://works.com'
def dowork(self):
call_api(self.URI)
對我來說,模擬失敗我正在使用模擬庫:
mock = MagicMock()
mock.side_effect = ['http://fail.com', 'http://works.com']
with patch('WebService.URI', mock):
# do the testing
但問題是我只能通過調用可調用的mock()
而不僅僅是訪問mock
來獲得mock來返回url
PS:我是一個模擬菜鳥。
沒有直接回答我自己的問題,我設法使用一個屬性來解決這個問題:
from dps.px.pxpost import PxPost
mock = MagicMock()
mock.side_effect = ['http://doesnotexist', PxPost.URI]
def URI(self):
return mock()
with patch('django.conf.settings.CELERY_ALWAYS_EAGER', True, create=True):
with patch('dps.px.pxpost.PxPost.URI', property(URI)):
self.transaction.process()
for sub_transaction in self.transaction.sub_transactions.all():
self.assertTrue(isinstance(sub_transaction.state, CompletedSubTransaction))
self.assertTrue(sub_transaction.transaction_logs.count() > 0)
self.assertTrue(isinstance(self.transaction.state, CompletedTransaction))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.