mocky是一个类,帮助您创建用于doctests的mock对象。
Mock的Python项目详细描述
类mocky(object):
“mocky是一个类,它希望帮助您为测试设置mock
对象。它可以帮助您观察调用了哪些函数(使用了哪些参数)以及设置了哪些属性。
除非指定了名称,否则mocky的名称是“root”:
>;>;mocky()。name
“root”
让我们从设置一些变量的简单示例开始,这样我们就可以感受mocky是如何工作的。注意,属性访问
永远不会导致attributeerror。相反,对不存在的成员变量的属性访问< BR/>将产生另一个Mocky
实例:
BR/> & gt;f=Mocky(f′)>f<br/> f>b/>>;类型(异常)为mocky
true
>;>;异常为f。异常
true
>;f.a.c.r='fidelio'
将f.a.c.r设置为'fidelio'
>;>;f.a.c.r
'fidelio'
请注意,当我们将'f.a.c.r'设置为'fidelio'时,mocky打印出属性已设置。假设我们有一个函数'fun',
在给定对象上设置一些特殊变量:
>;>def fun(obj):
…如果是对象,请处理我:
…obj.there\u you='go'
>;>myobj=mocky('myobj')
>;>fun(myobj)
设置myobj.there\u you to'go'
>;>myobj.please\u process\u me=false
设置myobj.please\u process\u me to false
>;
mocky也支持呼叫。另一个函数对我们的测试对象做了一些
的工作:
>;>def-huven(字符):
…character.getstatus().hitpoints-=1
>;>;挨饿(mocky('hugo'))\doctest:+省略号
回溯(最后一次调用):
…
类型错误:不支持的操作数类型-=:“mocky”和“int”
>;>;ezequiel=mocky('ezequiel')
>;ezequiel.getstatus().hitpoints=0
调用ezequiel.getstatus()
设置ezequiel.getstatus().hitpoints为0
>;>;挨饿(ezequiel)
调用ezequiel.getstatus()
设置ezequiel.getstatus().hitpoints为-1
如果签名
相同,mocky将返回相同的值:
秘密是f。不寻常(password='unsafe')
调用f。不寻常(password='unsafe')
false
“
定义初始(self,name='root'):
自己。
自己。
定义调用(self,*args,**kwargs):
argsstr=”,'.join([repr(arg)表示arg in arg s])
keys=已排序(kwargs.keys())
kwargsstr=','.join([%s=%r%(key,kwargs[key])表示key in keys])
如果argsstr和kwargsstr:
allargs=','.join([argsstr,Kwargsstr])
其他:
allargs=argsstr或Kwargsstr
return self.\u calls[allargs]
def-repr(self):
return self.name
def-getattr(self,name):
return self.name
def-getattr(self,name):
def-getattr(self,name):
self.[name]=mocky(%s.%s%(self.name,name))
retretretself.
retretretself。
retretretself.dict(dict)dict(self.di[名称]
def\u setattr(self,name,值):
打印“将%s.%s设置为%r”%(self.name,name,v区域)
self.uu dict[[名称]=值
“mocky是一个类,它希望帮助您为测试设置mock
对象。它可以帮助您观察调用了哪些函数(使用了哪些参数)以及设置了哪些属性。
除非指定了名称,否则mocky的名称是“root”:
>;>;mocky()。name
“root”
让我们从设置一些变量的简单示例开始,这样我们就可以感受mocky是如何工作的。注意,属性访问
永远不会导致attributeerror。相反,对不存在的成员变量的属性访问< BR/>将产生另一个Mocky
实例:
BR/> & gt;f=Mocky(f′)>f<br/> f>b/>>;类型(异常)为mocky
true
>;>;异常为f。异常
true
>;f.a.c.r='fidelio'
将f.a.c.r设置为'fidelio'
>;>;f.a.c.r
'fidelio'
请注意,当我们将'f.a.c.r'设置为'fidelio'时,mocky打印出属性已设置。假设我们有一个函数'fun',
在给定对象上设置一些特殊变量:
>;>def fun(obj):
…如果是对象,请处理我:
…obj.there\u you='go'
>;>myobj=mocky('myobj')
>;>fun(myobj)
设置myobj.there\u you to'go'
>;>myobj.please\u process\u me=false
设置myobj.please\u process\u me to false
>;
mocky也支持呼叫。另一个函数对我们的测试对象做了一些
的工作:
>;>def-huven(字符):
…character.getstatus().hitpoints-=1
>;>;挨饿(mocky('hugo'))\doctest:+省略号
回溯(最后一次调用):
…
类型错误:不支持的操作数类型-=:“mocky”和“int”
>;>;ezequiel=mocky('ezequiel')
>;ezequiel.getstatus().hitpoints=0
调用ezequiel.getstatus()
设置ezequiel.getstatus().hitpoints为0
>;>;挨饿(ezequiel)
调用ezequiel.getstatus()
设置ezequiel.getstatus().hitpoints为-1
如果签名
相同,mocky将返回相同的值:
秘密是f。不寻常(password='unsafe')
调用f。不寻常(password='unsafe')
false
“
定义初始(self,name='root'):
自己。
自己。
定义调用(self,*args,**kwargs):
argsstr=”,'.join([repr(arg)表示arg in arg s])
keys=已排序(kwargs.keys())
kwargsstr=','.join([%s=%r%(key,kwargs[key])表示key in keys])
如果argsstr和kwargsstr:
allargs=','.join([argsstr,Kwargsstr])
其他:
allargs=argsstr或Kwargsstr
return self.\u calls[allargs]
def-repr(self):
return self.name
def-getattr(self,name):
return self.name
def-getattr(self,name):
def-getattr(self,name):
self.[name]=mocky(%s.%s%(self.name,name))
retretretself.
retretretself。
retretretself.dict(dict)dict(self.di[名称]
def\u setattr(self,name,值):
打印“将%s.%s设置为%r”%(self.name,name,v区域)
self.uu dict[[名称]=值