祝嘲笑一類具有下列要求:嘲諷類屬性「autospec =真」在python
- 類已公開的讀/寫性能,在其
__init__()
方法 - 所定義的類具有公共屬性的對象創建它是自動遞增
- 我希望用
autospec=True
,所以類的API將在呼叫嚴格把關
一簡化類樣品:
class MyClass():
id = 0
def __init__(self, x=0.0, y=1.0):
self.x = x
self.y = y
self.id = MyClass._id
MyClass.id +=1
def calc_x_times_y(self):
return self.x*self.y
def calc_x_div_y(self, raise_if_y_not_zero=True):
try:
return self.x/self.y
except ZeroDivisionError:
if raise_if_y_not_zero:
raise ZeroDivisionError
else:
return float('nan')
我需要爲模擬對象的行爲作爲原始對象,就性質而言:
- 它應該自動增量分配給每個與外新ID創建模擬對象
- 應該允許訪問其
x,y
性質 但模擬方法調用應該由模擬攔截,並有其調用簽名驗證
關於此問題的最佳方法是什麼?
編輯
我已經嘗試過多種方法,包括繼承的Mock
類,使用attach_mock()
,並mock_add_spec()
,但總是遇上一些死衚衕。
我使用標準mock庫。
什麼嘲諷庫您使用?什麼是'autospec = True'? –