用于Python 3.5的Unittest Tkinter文件对话框

时间:2017-02-23 04:51:36

标签: python tkinter mocking

如何使用mock unitest来模拟filedialog.askopenfilename()或filedialog.saveasfilename()? Python 2.x的以下链接回答了同样的问题。 Unittest Tkinter File Dialog

该解决方案不适用于我正在使用的Python 3.5。

我从单元测试中尝试了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)

在method1中,它调用askopenfilename。我想让askopenfilename返回""。

我非常感谢任何帮助。

0 个答案:

没有答案