You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS Sonoma下使用qtbot运行测试无限挂起的解决办法问询

MacOS Sonoma下pytest-qt测试无限挂起的解决办法

以下是几个经过验证的可行方案:

  • 强制切换Qt后端为X11
    MacOS Sonoma的原生Qt后端存在兼容性问题,可通过强制使用X11后端规避。首先安装XQuartz(系统已自带则忽略),然后:

    • 运行测试时添加环境变量:QT_QPA_PLATFORM=xcb pytest
    • 或者在pytest配置文件(conftest.py)中添加:
      import os
      os.environ["QT_QPA_PLATFORM"] = "xcb"
      
  • 降级相关依赖版本
    新版本的pytest-qt或PyQt/PySide可能与Sonoma不兼容,尝试降级到稳定版本:

    • 降级pytest-qt:pip install pytest-qt==4.2.0
    • 降级PyQt6:pip install PyQt6==6.5.2
      可根据实际情况调整具体版本号。
  • 使用pytest-forked隔离测试进程
    安装pytest-forked插件,让每个测试在独立进程中运行,避免单个测试挂起影响全局:

    1. 安装插件:pip install pytest-forked
    2. 运行测试:pytest --forked
  • 手动管理QApplication实例
    绕过qtbot默认的初始化逻辑,手动创建和管理QApplication:

    from PyQt6.QtWidgets import QApplication
    import pytest
    
    @pytest.fixture(scope="session")
    def app():
        app_inst = QApplication.instance()
        if not app_inst:
            app_inst = QApplication([])
        yield app_inst
        app_inst.quit()
    
    def test_repro(app, qtbot):
        pass
    

内容的提问来源于stack exchange,提问作者Georgy Ivanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:02:37