2017-12-13 6 views
0

저는 PyQt을 처음 사용합니다. 그러나 을 pytest-qt 플러그인으로 사용하여 PyQt5 응용 프로그램을 테스트 할 예정입니다. 나는 SWTBotRCPTT으로 Java에서 GUI 테스트 경험을 쌓았으며 실시간 테스트에서 컨트롤과 GUI 전체가 어떻게되는지 알 수있었습니다. 내 새로운 파이썬 도구와 같은 행동을하고 싶습니다,하지만 그것은 pytest-qt 일부 백그라운드 방식으로 GUI를 테스트 것 같습니다. 모든 코드는 예상대로 작동하지만 테스트 중에 GUI가 표시되지 않습니다. 코드는 튜토리얼과 같이 간단하다 :pytest-qt로 PyQt5 앱을 테스트하는 동안 어떻게 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() 행의 주석을 해제하는 경우 (그들은 tutorial에서 그렇게), I는 냉동 배경 포함하는, 이상한 창을 볼 수 있습니다

strange window

나는 Python 쉘 (more)에서 작동한다는 것을 알고 있기 때문에 이론적으로 인터페이스를 보여줄 수 있다고 가정합니다 :

(210)

당신은, 예를 들어, 입력 할 수있는 여전히 그들과 상호 작용하고, 파이썬 쉘 프롬프트에서 위젯을 만들 수있는 다른 파이썬은

명령하지만 그것을 달성하는 방법을 모른다 pytest-QT

답변

0

이 코드는 내가 묻는대로 작동하며 인터페이스를 올바르게 보여줍니다. 중요한 것은 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() 
관련 문제