繁体   English   中英

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\1\chromedriver.exe")
    driver.implicitly_wait(5)
    wait = WebDriverWait(driver, 10)
    driver.maximize_window()
    yield
    driver.quit()

结果:“E NameError:未定义名称'驱动程序'”

目标结果:在没有类的情况下初始化 webdriver,将 webdriver 作为驱动程序设置到每个测试函数中,使用它运行函数并使用来自 conftest 的装置后置条件退出。 我有很多测试文件,这就是为什么我应该做一次。

我也尝试过从固定装置返回变量,但据我所知,测试函数仍然需要有固定装置的变量,对我来说它看起来是错误的。 例如: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 需要返回驱动程序,以便您可以使用它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM