我是PyQt的新手,但我将使用pytest和pytest-qt插件来测试我的PyQt5应用程序。我有一些用SWTBot和RCPTT在Java中进行GUI测试的经验,在那里我可以实时地看到控件和整个GUI在测试过程中发生了什么。我希望在我的新python工具中有这样的行为,但是pytest-qt似乎以某种背景方式测试GUI。所有的代码都像我预期的那样工作,但是在测试期间我看不到GUI。代码很简单,就像教程中的那样:
from tests.test import MyApp
from time import sleep
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
def test_myapp(qtbot):
app = QApplication([])
window = MyApp()
# window.show()
# app.exec_()
qtbot.addWidget(window)
qtbot.mouseClick(window.buttonBox.buttons()[0], Qt.LeftButton)
sleep(5)
assert window.label.text() == 'accept'如果我取消对window.show()行的注释(在教程中是这样做的),我可以看到一个奇怪的窗口,其中包含冻结的背景:

我认为在理论上显示接口是可能的,因为我知道PyQt5是从python (更多)中工作的:
例如,您可以从Python提示符创建小部件,与它们交互,并且仍然能够输入其他Python命令。
但我不知道如何用pytest-qt来实现。
发布于 2017-12-16 15:47:57
这段代码按照我的要求工作,它正确地显示了接口。关键是qtbot.waitForWindowShown(window)行。
from tests.test import MyApp
from time import sleep
from PyQt5.QtCore import *
def test_myapp(qtbot):
window = MyApp()
qtbot.addWidget(window)
window.show()
qtbot.waitForWindowShown(window)
sleep(3)
qtbot.mouseClick(window.buttonBox.buttons()[0], Qt.LeftButton)
assert window.label.text() == 'accept'
qtbot.stopForInteraction()https://stackoverflow.com/questions/47802375
复制相似问题