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

使用dash_duo的Dash单元测试持续触发TestingTimeoutError求助

解决Dash单元测试中dash_duo触发TestingTimeoutError的问题

核心原因

你遇到的超时并非测试代码里的断言导致,而是dash_duo fixture在初始化阶段(启动浏览器、连接Dash服务)未在默认超时时间内完成。以下是针对性的解决方法:


1. 确保ChromeDriver与Chrome版本完全匹配

这是最常见的问题:

  • 打开Chrome浏览器,访问chrome://version/查看主版本号(如118.0.5993.70)
  • 下载对应主版本的ChromeDriver,解压后确保其路径在系统环境变量PATH中,或者在测试代码里指定路径
  • 验证:命令行执行chromedriver,若能正常输出启动日志则说明可用(Linux/macOS需先给文件加执行权限:chmod +x chromedriver)

2. 延长dash_duo的超时时间

默认超时时间可能不足以完成初始化,可通过自定义fixture修改:
在测试目录下创建conftest.py,添加以下代码:

import pytest

@pytest.fixture
def dash_duo(dash_duo):
    # 将超时时间改为60秒(可根据实际情况调整)
    dash_duo.wait_timeout = 60
    yield dash_duo

3. 排查网络/环境拦截问题

  • 暂时关闭本地代理、VPN或防火墙,避免它们阻止ChromeDriver启动浏览器或连接Dash服务
  • 若在Linux环境下,添加Chrome启动参数规避沙箱限制,在conftest.py中修改:
@pytest.fixture
def dash_duo(dash_duo):
    dash_duo.options.add_argument("--no-sandbox")
    dash_duo.options.add_argument("--disable-dev-shm-usage")
    dash_duo.wait_timeout = 60
    yield dash_duo

4. 禁用无头模式排查启动问题

强制使用有头模式运行测试,直观查看浏览器启动是否异常:

  • 执行测试时添加命令行参数:pytest --headed
  • 或者在conftest.py中配置:
@pytest.fixture
def dash_duo(dash_duo):
    dash_duo.options.headless = False  # 禁用无头模式
    yield dash_duo

5. 锁定兼容的依赖版本

部分新版本的Dash、Selenium可能存在兼容性问题,可尝试固定稳定版本:

# requirements.txt
dash==2.11.1
selenium==4.9.0
dash-testing-stub==0.0.2

内容的提问来源于stack exchange,提问作者Austin J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:55:21