首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在用pytest-qt测试PyQt5应用程序时显示图形用户界面?

如何在用pytest-qt测试PyQt5应用程序时显示图形用户界面?
EN

Stack Overflow用户
提问于 2017-12-13 21:27:37
回答 1查看 3K关注 0票数 4

我是PyQt的新手,但我将使用pytestpytest-qt插件来测试我的PyQt5应用程序。我有一些用SWTBotRCPTT在Java中进行GUI测试的经验,在那里我可以实时地看到控件和整个GUI在测试过程中发生了什么。我希望在我的新python工具中有这样的行为,但是pytest-qt似乎以某种背景方式测试GUI。所有的代码都像我预期的那样工作,但是在测试期间我看不到GUI。代码很简单,就像教程中的那样:

代码语言:javascript
复制
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来实现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-16 15:47:57

这段代码按照我的要求工作,它正确地显示了接口。关键是qtbot.waitForWindowShown(window)行。

代码语言:javascript
复制
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()
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47802375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档