Pytest阻止pyside代码执行



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

我有一个测试函数的示例脚本。

我有一个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的调用。

相关内容

  • 没有找到相关文章

最新更新