pytest,使用拆卸退出为每个测试文件初始化 webdriver

pytest, initialize webdriver for each test file with teardown quit

测试模块中的当前部分代码:

def test_01():
    driver.get('https://www.google.com')

竞赛代码:

import pytest
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait


@pytest.fixture(autouse=True)
def browser():
    driver = webdriver.Chrome(executable_path=r"C:\webdrivers\chromedriver.exe")
    driver.implicitly_wait(5)
    wait = WebDriverWait(driver, 10)
    driver.maximize_window()
    yield
    driver.quit()

结果:“E NameError:名称'driver'未定义”

目标结果:在没有 class 的情况下初始化 webdriver,将 webdriver 作为驱动程序设置到每个测试函数中,运行 使用它运行并使用 fixtures 后置条件退出比赛。我有很多测试文件,所以我应该做一次。

我也试过 return 来自 fixture 的变量,但据我所知,测试函数仍然需要有用于 fixture 的变量,这对我来说看起来是错误的。例如:fixture - return x, testfunction(fixture): x = fixture.它仍然不适用于 webdriver\driver(或者更确切地说,我没有弄明白)。

您的测试函数需要将夹具作为参数,这是问题的第一部分。

例如:

def test_01(driver):
    driver.get('https://www.google.com')

但是您还没有 driver 灯具,只有一个名为 browser 的灯具,因此您需要更改灯具的名称:

@pytest.fixture(autouse=True)
def driver(request):
   ...

最后,fixture需要return驱动程序,这样你就可以使用它了。

@pytest.fixture(autouse=True)
def driver(request):
    ...
    yield driver
    ...