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

