2017-12-13 5 views
0

私はPyQtを初めて使用していますが、私はPyQt5アプリケーションをテストするためにとpytest-qtプラグインを使用します。私はSWTBotRCPTTでJavaでいくつかのGUIテスト経験を持っていました。そこで、テスト中にコントロールやGUI全体がリアルタイムで何が起こるかを知ることができました。私は新しいPythonツールでこのような動作をしたいのですが、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にそう)、私は奇妙なウィンドウを表示することができ、コメントを解除する場合:

​​

私は、Pythonシェル(more)からPyQt5が動作することを知っているので、理論的にはインターフェイスを表示することができます:

あなたは、例えば、入力することができるという、まだ彼らとの対話、および、Pythonシェルプロンプトからウィジェットを作成することができ、他のPythonは

コマンドしかし、私はそれを達成する方法がわからない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() 
関連する問題