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

Python Selenium参数化测试中,如何让首页方法仅首次执行?

解决方案

要让self.closePopup()和homepage.ClickLogin()仅在测试用例首次执行时运行,可以利用pytest的类级别自动fixture实现,具体修改如下:

修改后的测试用例代码

import pytest
from selenium import webdriver
from time import sleep
from webdriver_manager.chrome import ChromeDriverManager
from TestData.LoginData import LoginData
from pageobject.HomePage import HomePage
from pageobject.LoginPage import LoginPage
from utilities.BaseClass import BaseClass

@pytest.fixture(params=LoginData.test_login_data)
def getData(request):
    return request.param

class TestLogin(BaseClass):
    # 定义类级别自动执行的fixture,仅在类的所有测试用例开始前运行一次
    @pytest.fixture(scope="class", autouse=True)
    def setup_before_first_test(self):
        homepage = HomePage(self.driver)
        # 执行仅需首次运行的操作
        self.closePopup()
        homepage.ClickLogin()

    def test_login(self, getData):
        loginpage = LoginPage(self.driver)
        loginpage.getNumber().send_keys(getData["phone"])
        sleep(5)
        self.driver.refresh()

关键说明

  • scope="class":指定fixture作用域为整个测试类,意味着这个fixture只会在TestLogin类的所有测试用例执行前运行一次,不会随参数化的测试用例重复执行。
  • autouse=True:让fixture自动触发,无需在test_login方法中显式调用,简化代码逻辑。
  • 将首页相关的初始化操作移到这个类级fixture中,确保弹窗关闭、点击登录按钮这些操作只执行一次,后续参数化的测试用例直接进入登录页面输入手机号即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:35:03