1

我有一个很常见的问题,但我似乎找不到明显的解决方案。

我正在尝试将自动化测试作为分发 Python 的 TFS 构建脚本的一部分。然而不幸的是,其中一位开发人员已将其放入包的 _ _ init _ _.py 之一中:

import Tkinter
import tkMessageBox 

warningWindow = Tkinter.Tk()
warningWindow.withdraw()
tkMessageBox.showwarning("WARNING", "blah, blah, blah")

warningWindow.destroy()

这本身就很好 - 但不是在批量运行时(它会使一切暂停)。

我最初的希望是 Tkinter 有一个禁用弹出窗口的配置设置,但如果是这样,我就找不到它。

另一种方法是“入侵” tkMessageBox 模块,并将 showwarning 替换为不执行任何操作的内容。我看过这个,但我不记得怎么做......

我宁愿希望有比这更好的方法?

4

1 回答 1

0

好的,在没有更好的解决方案的情况下,我会说我做了什么:

import os
if not os.environ.has_key('SILENT_MODE'):
    import Tkinter
    import tkMessageBox 

    warningWindow = Tkinter.Tk()
    warningWindow.withdraw()
    tkMessageBox.showwarning("WARNING", "blah, blah, blah")

    warningWindow.destroy()

在启动脚本中:

SET SILENT_MODE=1
python -m unittest discover

我猜这问题,但我希望有更优雅/通用的东西。

于 2013-09-03T12:58:23.177 回答