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

使用conftest.py无法在测试用例中访问self.driver方法求助

问题分析与解决步骤

你的代码存在一个核心问题:测试用例方法test_sample同时通过继承BaseClass和参数传入setup fixture使用setup逻辑,这会导致冲突,且多余的参数会干扰self.driver的正常注入。以下是具体修正步骤:

1. 移除测试用例中的setup参数

你的BaseClass已经通过@pytest.mark.usefixtures("setup")绑定了setup fixture,测试类继承BaseClass后,pytest会自动执行setup并将driver赋值给self.driver,无需再在测试方法中传入setup参数。

修正后的test_case_1.py:

from selenium.webdriver.common.by import By
from BaseClass import BaseClass

class TestOne(BaseClass):
    def test_sample(self):
        # 现在可正常调用self.driver的所有方法
        self.driver.find_element(By.ID, "target-id")
        self.driver.refresh()
        # 其他WebDriver操作...

2. 确保conftest.py的位置正确

conftest.py必须放在测试用例所在目录或其父目录下,pytest会自动发现并加载该文件中的fixture,无需手动导入。若测试文件与conftest不在同一目录层级,pytest可能无法识别setup fixture。

3. 可选:给BaseClass添加类型注解(新手友好)

为让IDE正确提示driver的方法,可给BaseClass添加类型注解,避免代码提示报错:

修改后的BaseClass.py:

import pytest
from selenium.webdriver.chrome.webdriver import WebDriver

@pytest.mark.usefixtures("setup")
class BaseClass:
    driver: WebDriver  # 添加类型注解,IDE将识别driver的全部方法

验证修正效果

运行测试命令:pytest test_case_1.py -v,此时测试用例中的self.driver可正常调用Selenium WebDriver的所有方法,比如find_element、get、close等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:32:13