我使用QTest和unittest在PyQt中编写了一系列单元测试。我的代码传递信号,所以为了确保在测试之前的操作之后有足够的时间,我会抛出一些qWaits。
APP.ui.serverPortEdit.setText('1234')
QTest.mouseClick(APP.ui.userConnectButton, Qt.LeftButton)
QTest.qWait(2000) #wait for the server to connect
self.checkOnline()
我想在PySide中运行相同的测试,但我找不到qWait的模拟。我忽略了什么吗? PySide qTest docs没有提到它。
答案 0 :(得分:2)
你不能使用python的time.sleep()吗?
答案 1 :(得分:1)
对于遇到这种情况的其他人(我的第一次Google点击)time.sleep()
不会处理QEvent
。我遇到了PyQt4/PySide wrapper,它定义了与PySide一起使用的qWait:
from datetime import datetime as datetime_, timedelta
@staticmethod
def qWait(t):
end = datetime_.now() + timedelta(milliseconds=t)
while datetime_.now() < end:
QtGui.QApplication.processEvents()
QtTest.QTest.qWait = qWait