2016-07-14 7 views
0

これは簡単なモックでなければならないと感じていますが、まだ動作するようにはなっていません。私は、次のディレクトリ構造のオフに働いていますインポートされたモジュールによって機能パッチが選択されていない

次のように

module 
├── utilities.py 
├── order.py 
├── test 
│ ├── test_order.py 

関連するコードは次のとおりです。

- utilities.py -

def get_file_path(order_number, file_extension): 
    # this is what I want to mock out 

- オーダー。 py -

from module.utilities import get_file_path 

class Order(): 
    # ... 

    @classmethod 
    def load_order(order_number, extension): 
     file_path = get_file_path(order_number, extension) 

- test_order.py -

import unittest 
from unittest.mock import patch 
from module.order import order 

@patch('order.get_file_path') 
def mock_file(_, extension): 
    if extension == 'json': 
     return static_file_path 

class TestOrder(unittest.TestCase): 
    def test_load_order_by_number(self): 
     my_order = order.load_order(number, extension) 

これは私がPythonでモックを試した初めての試みです。私が言うことから、私は何をしなければならないのでしょうか。Orderget_file_pathを呼び出すときはいつも、それはutilities.pyのものを使います。

私が試してみました

module.order.get_file_path

とパッチ適用test_load_order_by_number

  • を飾る

    • を私はSOで探してみましたが、私が見つけた解決策のどれも助けていないので、私は私だけだと思いました明らかに間違ったことを誰かが指摘することができます。

  • 答えて

    0

    クラス外のパッチを作成したように見えませんでした。私は特定のテストのためのデコレータとしてパッチを引っ張ったときに動作を開始しました。

    class TestOrder(unittest.TestCase): 
    
        @patch('utilities.order.get_file_path') 
        def test_load_order_by_number(self, file_mock): 
    
         def mock_get_file_path(*args, **kwargs): 
          if kwargs.get('extension', None) == 'json': 
           return static_file_path 
          return None 
    
         file_mock.side_effect = mock_get_file_path 
    
         my_order = order.load_order(number, extension) 
    
    関連する問題