2017-01-17 10 views
0

私はPythonを使用していますが、私は少し新しくテストしています。モッキングとサルのパッチの違いは何ですか?

import some_module 

def get_file_data(): 
    return "here is the pretend file data" 

some_module.get_file_data = get_file_data 

# proceed to test 

私は、これはquestionのように「モンキーパッチング」と呼ばれる参照してください。私は頻繁にテストがそうのようなローカル方法で外部依存関係の交換を参照してください。私はまた、「模倣」という言葉が、「お金の詰まり」と並んで、あるいは非常に似たようなシナリオのように見えることも見ています。

2つの概念に違いはありますか?

答えて

1

Monkey patchingは、実行時に、手のひらをテストしたり、バグを修正したり、動作を変更したりするために、関数/メソッド/クラスを別のものに置き換えています。

unittest.mock libraryはモックオブジェクトによるテスト対象ソフトウェアの一部を置き換えるためにサルパッチを利用しています。それが呼び出されているので、あなたが主張すると、コードの 呼び出し動作をテストすることができますどのようにモックオブジェクトの記録を保持

  • :それは、次のような、巧妙なユニットテストを書くための機能を提供します。
  • 実際のサルのパッチ適用のための便利なデコレータpatch()
  • モックオブジェクトを特定の値(return_value)を返し、特定の例外(side_effect)を返すようにすることができます。
  • 「マジックメス」(例えば__str__など)の侮辱。

たとえば、クライアントのネットワークI/O(urllib、requests)を置き換えて、unittestsが外部サーバーに依存することなく動作するようにすることができます。

関連する問題