使用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
相关产品推荐
相关产品推荐

