2017-02-23 8 views
1

mockのunitestを使って、filedialog.askopenfilename()またはfiledialog.saveasfilename()をどうやって使っていますか? Python 2.xの次のリンクでも同じ質問が返されました。 Unittest Tkinter File DialogUnittest Tkinter Python 3.5のファイルダイアログ

解決策は、私が使用しているPython 3.5では機能しません。

私はunittestからMagicMockとPatchの両方を試しましたが、何も動いていませんでした。以下の私のコードを見てください。

from tkinter.filedialog import * 
from unittest.mock import MagicMock 
from unittest.mock import patch 

# @patch(filedialog.askopenfilename) 
def test1(self): 
    try: 
     filedialog.askopenfilename = MagicMock(return_value="") 
     app = class1() 
     app.method1() 
    except ValueError as e: 
     print(e) 

@patch(filedialog.askopenfilename) 
def test2(self, mock1): 
    try: 
     # filedialog.askopenfilename = MagicMock(return_value="") 
     app = class1() 
     app.method1() #method1 has filedialog.askopenfilename in it 
    except ValueError as e: 
     print(e) 

メソッド1の中で、askopenfilenameを呼び出します。私はaskopenfilenameが ""を返すようにしたいと思います。

私は非常に助けていただければ幸いです。

答えて

0

私はそれを行う方法を見つけます。私はaskopenfilenameの前にクラス名を指定する必要があります。

from unittest.mock import Mock 
    class1.askopenfilename = Mock(return_value='') 
    # Inside class1, method1 uses askopenfilename to open up file dialog box 
    class1.method1() # method1 will call Mock(return_value='') instead of askopenfilename and return '' 
関連する問題