2016-07-03 9 views
0

Ich habe ein Hauptfenster mit Tasten, Etiketten usw.Pytest Blöcke Pyside Code aus der Ausführung

Ich habe ein Beispielskript mit Testfunktionen.

Ich habe eine Pytest-Vorrichtung, um den aktuell ausgeführten Testfunktionsnamen zu erhalten.

Ich möchte diesen aktuellen Testfunktionsname auf eine Bezeichnung im Hauptfenster drucken.


Dies ist mein Code Prüffunktion Namen zu bekommen:

... 
request.node.name 

Dies ist mein Code-Label in pyside

label_curr_test_name.setText(...) 

Und alle zusammen wie dies für die Einstellung mein Code aussieht:

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) 

Diese sieht nicht festgelegt, die auf alle Label. Eine weitere Sache, die wichtig ist, zu wissen: Ich habe eine Schaltfläche „Start“, die die pytest beginnt, wenn wie diese angeklickt:

testmain.py

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

Und nach diesem Befehl jeden Anruf zu pyside, um ein Label zu setzen, schlägt fehl, während es ohne pytest läuft.

Jeder kann helfen? Was ist das Problem oder wie löse ich das?

Antwort

0

Das Problem wurde behoben. Das Problem war, dass pyside in 1 Hauptthread läuft. Jeder andere Prozess, der in diesem Moment ausgeführt wird, wird pyside einfrieren. Also war die Lösung, den Aufruf für pytest in einem Thread zu trennen.