dingus是有点像一个模拟对象。主要的区别是,你不成立的预期提前。你只要运行你的代码,使用dingus到位另一个对象或类的,它会记录发生在什么。然后,一旦你的代码已经被行使,你可以什么它做的dingus断言。
新dingus从Dingus类创建。你可以给dinguses名字,这有助于调试你的测试,尤其是当有在玩多dinguses。
 从>>>进口dingus Dingus
  >>> D = Dingus(“根”)
  >>>ð
 
访问dingus的任何属性将返回一个新dingus。
  >>> d.something
 
也有少数例外特殊dingus方法。我们会看到一些在一个位。
一个dingus也可以被称为像一个函数或方法。它不在乎你有多少争论给它或者是这些参数是。调用一个dingus总是返回相同的对象,不管争论。
  >>> D()
 
  >>> D('说法')
 
  >>> D(55)
 
录制和断言
在任何时候,我们可以得到已作出一个dingus的呼叫的列表。在调用列表中的每个条目包含:
  *的方法的调用的名字(或“()”如果dingus本身被称为)
  *的参数,或者()如果没有
  *关键字argumnets,或{}如果没有
  *被返回给调用者的值
下面是我们为D迄今取得的呼叫列表:
 从>>>进口pprint pprint
  >>> pprint(d.calls)
  [('()',(),{},
 ('()',('说法',),{}
 ('()',(55,),{},
您可以过滤按名称,参数和关键字参数要求:
  >>> pprint(d.calls('()',55))
  [('()',(55,),{},
如果你不关心一个特定的参数的值,可以在过滤时使用的值dontCare项:
 从>>>进口dingus dontCare项
  >>> pprint(d.calls('()',dontCare项))
 ('()',('说法',),{}
 ('()',(55,),{},
Dinguses可以做的不仅仅是有访问属性和调用。它们支持Python的很多运营商。的目标是允许,并记录,任何交互:
  >>> D = Dingus(“根”)
  >>>(2 ** d.something)['你好']()/ 100 *'富'
 
(希望你现实世界dingus录音不会这个样子!)
补丁
Dingus提供了在测试过程中修补对象的上下文经理。例如:
 从>>>进口dingus补丁
  >>>进口的urllib2
  >>>补丁('urllib2.urlopen'):
  ...打印urllib2.urlopen .__ class__
&NBSP; <类的dingus.Dingus“>
&NBSP; >>>打印urllib2.urlopen .__ class__
&NBSP; <式“功能”>
您也可以使用它作为您的测试方法装饰:
&NBSP; >>> @patch('urllib2.urlopen“)
&NBSP; ...高清test_something(个体经营):
&NBSP; ...通
&NBSP; ...
DANGEROUS MAGIC
Dingus还可以自动运行测试时更换模块的全局。这使您可以编写完全隔离的单元测试。见例子/ urllib2的/ test_urllib2.py的例子。笔者不再建议使用此功能,因为它可以鼓励很脆的测试。你应该感到手动嘲讽依赖的痛苦; 。疼痛会告诉你,当一个类合作,与太多的人
要求:
- 在Python中
评论没有发现