Pytest阻止pyside代码执行

时间:2016-07-03 16:56:52

标签: python user-interface pyside pytest

我有一个带有按钮,标签等的主窗口。

我有一个带有测试功能的示例脚本。

我有一个pytest fixture来获取当前执行的测试函数名称。

我想将当前测试功能名称打印到主窗口中的标签。

这是获取测试功能名称的代码:

...
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)

这根本没有设置标签。还有一件事要知道:我有一个按钮" Start"这样点击时会启动pytest:

  

testmain.py

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

在该命令之后,对pyside设置标签的任何调用都会失败,而没有pytest运行它会起作用。

任何人都可以提供帮助?问题是什么或如何解决?

1 个答案:

答案 0 :(得分:0)

解决了这个问题。问题是pyside在1个主线程中运行。在那一刻运行的任何其他进程都将冻结pyside。所以解决方案是在一个线程中分离pytest的调用。