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

运行conftest.py遇UnboundLocalError:driver变量未赋值即引用

解决UnboundLocalError: local variable 'driver' referenced before assignment问题

你的代码存在两个核心问题,导致了这个错误:

  1. browser fixture没有返回获取到的浏览器选项值,使得setup函数接收的browser参数为None
  2. setup函数中,当browser既不是chrome也不是firefox时,driver变量未初始化就执行return,触发未绑定局部变量错误

修复后的完整代码

from selenium import webdriver
import pytest

@pytest.fixture()
def setup(browser):
    driver = None
    if browser == 'chrome':
        driver = webdriver.Chrome(executable_path="C:/Drivers/chromedriver.exe")
    elif browser == 'firefox':
        driver = webdriver.Firefox(executable_path="C:/Drivers/geckodriver.exe")
    else:
        # 明确抛出异常告知不支持的浏览器类型
        raise ValueError(f"不支持的浏览器类型: {browser},请使用chrome或firefox")
    return driver

def pytest_addoption(parser):
    parser.addoption("--browser")

@pytest.fixture()
def browser(request):
    # 新增return,传递命令行获取的浏览器参数
    return request.config.getoption("--browser")

关键修改说明

  • 修复browser fixture:原函数仅调用request.config.getoption("--browser")但未返回值,导致setup拿到的browser是None,直接跳过所有分支。添加return后才能正确传递命令行传入的浏览器参数。
  • 初始化driver并处理异常分支:提前将driver初始化为None,同时增加else分支处理未知浏览器类型,主动抛出异常明确提示用户问题,避免因driver未定义触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:36:19