我是Qt
新手,我正在开发基于Qt
的用户界面库。我想在QApplication
上启动主setUp
并在tearDown
关闭它,这样我就不会在测试之间发生任何事件或其他问题。现在,这是我的setUp
/ tearDown
方法:
class _QtTest(unittest.TestCase):
def setUp(self):
"""Set up a QAppplication on each test case."""
try:
QApplication = QtGui.QApplication
except AttributeError:
QApplication = QtWidgets.QApplication
self.qt_app = QApplication.instance()
if self.qt_app is None:
self.qt_app = QApplication(sys.argv)
def tearDown(self):
"""Clear the QApplication's event queue."""
# After each test, empty the event queue.
# This should help to make sure that there aren't any event-based race
# conditions where a C/C++ object is deleted before a slot is called.
self.qt_app.sendPostedEvents()
self.qt_app.quit()
不幸的是,最后self.qt_app.quit()
似乎在所有连续测试中永久关闭了QApplication
。有没有办法可以在QApplication
方法中重新启动新的setUp
?
答案 0 :(得分:0)
根据您的要求使用::exec()
的{{1}}和::exit()
方法。
调用QApplication
进入主事件循环。在::exec()
。
调用setUp
会离开主事件循环。在::exit()
。