2017-10-06 4 views
0

他の関数で宣言された変数を使用する関数をユニットテストしています。他の関数で宣言されたPythonの模倣グローバル変数

def first_fun(): 
    global file_path 
    file_path = get_file_path() 
    . 
    . 

def second_fun(): 
    with open(file_path, "r") as flz: 
    . 
    . 

second_fun()のテスト中にfile_pathをモックするにはどうすればよいですか? 私はこれを試しましたが動作しません。考慮すべき

私は得ることに保つ
@patch.object(source_module, 'file_path') 
    def test_second_fun(self): 
      source_module.second_fun() 

...属性 'FILE_PATH' を持っていない

+1

最良の解決策は、「グローバル」を使用しないことです。多くの開発者がアンチパターンとみなしています。 –

答えて

0

2つのこと:

まず:

明示的に優れています暗黙よりも

この場合、

のfile_pathは関数パラメータでなければなりません。

第二:あなたのテストのための ユニットテストするためには、あなたが(オープンパッチを適用すべきである)、パスではなく、あなたが外部ressourceに依存してはなりませんので。

関連する問題