2016-10-01 1 views
-1

ユニットテストが(直接的に)相互作用しない他の関数/クラスをインポートする関数fのユニットテストを書いています。これらの関数をユニットテスト(おそらくset_up())からパッチする方法はありますか?モックとパッチによるユニットテスト

参考までに、私はPython 2.7を使用しています。

unittestから、ヘルパーの動作を修正/修正したいと思います。ユニットテストファイルで

:some_functionで

def test_some_function(): 
    assert(some_function() == True) 

()定義

import helper 
def some_function(): 
    foo = helper.do_something() 
    return foo & bar 
+1

シナリオの[mcve]を入力してください。すなわち、あなたのコードとテストコードを表示し、あなたが持っている問題を説明してください。 – idjaw

+0

が編集されました。うまくいけば十分です。これは一般的な質問のほうが多いので、私は貼り付けできるコードがずっとあるとは思わない。 1つのファイル内にパッチを当てることはできますが、単体テストの振る舞いを変更したいと考えています。私はset_up()パッチコマンドを使ってみましたが、動作させることができませんでした。 – PK5144

+1

だから、あなたは 'helper.do_something'が何をしているのかを制御したいのですか?言い換えれば、あなたは 'some_function'の単体テストを書くためにその戻り値を制御するためにそれを嘲笑しようとしていますか?それは間違いなく実行可能ですので – idjaw

答えて

1

モジュールをモックはかなり標準的であり、hereを文書。それがどのように行われているか、かなり明白な例が見えます。

さらに、他のスクリプトでモジュールを正しく模倣する方法を理解するには、where to patchを理解することが重要です。

import unittest 
from unittest.mock import patch 

import module_you_are_testing 

class MyTest(unittest.TestCase): 

    @patch('module_you_are_testing.helper') 
    def test_some_function(self, helper_mock): 
     helper_mock.do_something.return_value = "something" 
     # do more of your testing things here 

だから、ここ覚えておくべき重要なことは、あなたがに関してhelperを参照していることである:あなたのコードを参照してより明確な例を提供するために

は、あなたがこのような何かをしたいですには、をテストしています。私が提供したサンプルコードを見ると、module_you_are_testingをインポートしていることがわかります。だから、に関しては、あなたは嘲笑します。

関連する問題