2016-07-03 2 views
0

У меня есть главное окно с кнопками, наклейками и т. Д.Pytest блокирует код pyside от исполнения

У меня есть образец сценария с тестовыми функциями.

У меня есть ящик 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) 

Это оленья кожа установить метку на всех. Еще одна вещь, которую важно знать: У меня есть кнопка «Пуск», который запускает pytest при нажатии, как это:

testmain.py

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

И после этой команды любой вызов pyside, чтобы установить метку, тогда как без запуска pytest это работает.

Любой может помочь? В чем проблема или как я могу это решить?

ответ

0

Решила проблему. Проблема заключалась в том, что pyside работает в 1 основном потоке. Любой другой процесс, который запускается в этот момент, заморозит pyside. Таким образом, решение заключалось в том, чтобы отделить вызов pytest в потоке.