簡體   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