dingusは、ソートのモックオブジェクトのようなものです。主な違いは、事前に期待を設定していないということです。あなただけの別のオブジェクトやクラスの代わりにdingusを使用して、あなたのコードを実行し、それはそれに何が起こるかが記録されます。あなたのコードが行使された後次に、あなたはそれがdingusに何をしたかについての表明を行うことができます。
新しいdingusはDingusクラスから作成されます。あなたは、劇中の複数dingusesがある場合は特に、あなたのテストのデバッグに役立ちますdinguses名を与えることができます。
  >>> dingus輸入Dingusから
  >>> D = Dingus(「ルート」)
  >>> D
 
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 * 'foo'に
 
(うまくいけば、あなたの現実世界のdingus記録は次のようになりません!)
のパッチングの
Dingusはテスト中にオブジェクトにパッチを適用するためのコンテキストマネージャを提供します。例えば:
  >>> dingus輸入パッチから
  >>>インポートのurllib2
  >>>パッチ( 'はurllib2.urlopen')と:
  ...印刷はurllib2.urlopen .__ class__
&NBSP; <クラスのdingus.Dingus '>
&NBSP; >>>印刷はurllib2.urlopen .__ class__
&NBSP; <タイプ '機能'>
また、あなたのテストメソッドでデコレータとしてこれを使用することができます。
&NBSP; >>> @patch( 'はurllib2.urlopen')
&NBSP; ... DEF test_something(自己):
&NBSP; ...パス
&NBSP; ...
<強い> DANGEROUS MAGIC の
テストの実行時Dingusも自動的にモジュールのグローバルを置き換えることができます。これはあなたが完全に孤立したユニットテストを書くことができます。例えば例/ urllib2の/ test_urllib2.pyを参照してください。それは非常に脆いテストを促すことができるように、著者は、もはや、この機能を推奨していません。あなたは、手動で依存関係をあざけるの痛みを感じるべきである。クラスがあまりにも多くの他の人と協力するときの痛みはあなたを教えてくれます。
の要件の:ます。
- のPythonます。
コメントが見つかりません