2016-07-03 18 views
0

私はボタンやラベルなどのメインウィンドウを持っていますPytestブロック実行コード

私はテスト機能を備えたサンプルスクリプトを持っています。

私は現在実行されているテスト関数名を取得するpytestフィクスチャを持っています。

現在のテスト関数名をメインウィンドウのラベルに印刷したいとします。


これは、テスト関数名を取得するための私のコードです:

... 
request.node.name 

これは私のコードは次のようになり、一緒pysideに

label_curr_test_name.setText(...) 

そして、すべてのラベルを設定するための私のコードです

testcase.py

def test_1(update_test_status): 
    assert True 
def test_2(update_test_status): 
    assert True 

conftest.py

import pytest 
from testmain import MainWindow # my window with the label created with pyside 

@pytest.fixture() 
def update_test_status(request): 
    # implemented as singleton 
    main = MainWindow() 
    main.label_curr_test_name.setText(request.node.name) 

このdoesntのは、すべてのラベルを設定します。知っておくことが重要であるもう一つ:へ

testmain.py

full_path = file_path + directory + file_name + '.py' 
pytest.main(['-x', full_path]) 

そして、そのコマンドの後に任意のコール:次のようにクリックしたときpytestを開始し、私がボタンを持っている「スタート」ラベルを設定するpysideは失敗しますが、pytestを実行しないと動作しません。

誰でも手助けできますか?問題は何ですか?またはこれをどのように解決できますか?

答えて

0

問題を解決しました。問題は、pysideが1つのメインスレッドで動作することでした。その時点で実行されている他のプロセスはpysideをフリーズします。だから解決策は、スレッドでpytestの呼び出しを分離することでした。

関連する問題