首页 > 解决方案 > Pyest 第二个浏览器参数不会从夹具加载站点

问题描述

我有一个类 Pytest 夹具,它有两个参数chromefirefox将在类级别运行。第一个参数 ,很好地chrome加载了load_site夹具,但第二个参数,firefox,不加载load_site,而是直接进入 yield 并关闭浏览器。不确定是什么原因造成的。请帮忙!

如果将load_site夹具从类中删除并设置在test_open_urlwith中,它确实有效self.driver.get(MY_LOGIN_PAGE)

不幸的是,我无法将其从类固定装置中分离出来,因为我需要在每次初始测试运行开始时加载此页面。

我的代码如下:

import pytest
from selenium import webdriver
from time import sleep
from webdriver_manager.chrome import ChromeDriverManager


@pytest.fixture(params=["chrome", "firefox"], scope="class")
def driver_init(request):
    if request.param == "chrome":
        web_driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
    if request.param == "firefox":
        web_driver = webdriver.Firefox(executable_path="../resources/drivers/geckodriver")
    request.cls.driver = web_driver
    yield
    web_driver.close()


@pytest.fixture(scope="class", name="load_site")
def load_site(request):
    request.cls.driver.get("MY_LOGIN_PAGE")


@pytest.mark.usefixtures("driver_init", "load_site")
class TestURL:
    def test_open_url(self):
        sleep(2)

标签: pythonseleniumpytestfixtures

解决方案


推荐阅读