祝嘲笑一类具有下列要求:嘲讽类属性“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'? –