运行conftest.py遇UnboundLocalError:driver变量未赋值即引用
解决UnboundLocalError: local variable 'driver' referenced before assignment问题
你的代码存在两个核心问题,导致了这个错误:
browserfixture没有返回获取到的浏览器选项值,使得setup函数接收的browser参数为Nonesetup函数中,当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")
关键修改说明
- 修复
browserfixture:原函数仅调用request.config.getoption("--browser")但未返回值,导致setup拿到的browser是None,直接跳过所有分支。添加return后才能正确传递命令行传入的浏览器参数。 - 初始化
driver并处理异常分支:提前将driver初始化为None,同时增加else分支处理未知浏览器类型,主动抛出异常明确提示用户问题,避免因driver未定义触发错误。
内容的提问来源于stack exchange,提问作者Hafsa
相关产品推荐
相关产品推荐

