我有一个主窗口的按钮,标签等。
我有一个测试函数的示例脚本。
我有一个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)
这根本没有设置标签。还有一件重要的事情要知道:我有一个按钮"开始",当像这样单击时,它会启动pytest:
testmain.py
full_path = file_path + directory + file_name + '.py'
pytest.main(['-x', full_path])
在该命令之后,任何调用pyside设置标签失败,而没有pytest运行它可以工作。
有人能帮忙吗?问题是什么,我该如何解决?
问题解决了。问题是pyside在1个主线程中运行。此时运行的任何其他进程都将冻结在pyside。因此,解决方案是在一个线程中分离对pytest的调用。