2016-12-14 17 views
0

私はこのようなユニットテストのための方法を模擬したいと思います:Pythonのモック戻り値は

get_tree_test.py

from company.marketing_tree import get_tree 

class MidNightTests(TestCase): 
@mock.patch("company.analytics.get_fb_data", autospec=True) 
    def test_first_midnight(self, mock_fb_data): 
     mock_fb_data.return_value = {} 
     get_tree() 

get_tree。 PY

from company.analytics import get_fb_data 

def get_tree(): 
    executor = ThreadPoolExecutor(max_workers=2) 
    data_caller = executor.submit(get_data) 
    info_caller = executor.submit(get_info) 

def get_data(): 
    executor = ThreadPoolExecutor(max_workers=2) 
    first_data = exeuctor.submit(get_fb_data) 

私は、mock_fb_data.return_value = {}はモックオブジェクトとして作成されていることがわかりますが、WHE n get_data()メソッドをデバッグするget_fb_dataはモックではなく関数であることがわかります

私は何が欠けていますか?

答えて

2

正しい場所にパッチを当てる必要があります。 get_tree内では、コードを直接使用するグローバル名get_fb_data、作成された:あなたが、ないオリジナルcompany.analytics.get_fb_data名前ですにパッチを適用する必要が

from company.analytics import get_fb_data 

を。代わりにモックを指すように名前を置き換えることにより、パッチ適用作品:

class MidNightTests(TestCase): 
    @mock.patch("get_tree.get_fb_data", autospec=True) 
    def test_first_midnight(self, mock_fb_data): 
     mock_fb_data.return_value = {} 
     get_tree() 

unittest.mockドキュメントのWhere to patch sectionを参照してください。

+0

ありがとうございました! – Dejell

関連する問題