Pytest — связать функцию строку с локальными переменными (оптимизация тестов)

#python #selenium-webdriver #pytest

#python #selenium-webdriver #pytest

Вопрос:

conftest:

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


@pytest.fixture(autouse=True)
def driver():
    driver = webdriver.Chrome(executable_path=r"C:webdriverschromedriver.exe")
    driver.implicitly_wait(5)
    driver.maximize_window()
    yield driver
    driver.quit()


@pytest.fixture(autouse=True)
def wait(driver):
    wait = WebDriverWait(driver, 10)
    return wait
  

пример теста:

 from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from variables import *


def test_login(driver, wait):
    driver.get(url)
    original_window = driver.current_window_handle
    wait.until(EC.visibility_of_element_located((By.XPATH, login_btn_ws)))
    driver.find_element_by_xpath(login_btn_ws).click()
    for window_handle in driver.window_handles:
        if window_handle != original_window:
            driver.switch_to.window(window_handle)
            break
    wait.until(EC.visibility_of_element_located((By.XPATH, login_field)))
    driver.find_element_by_xpath(login_field).send_keys(login)
    driver.find_element_by_xpath(password_field).send_keys(password, Keys.ENTER)
    wait.until((EC.element_to_be_clickable((By.XPATH, welcome_field))))
    assert url_check in driver.current_url and welcome_check in driver.find_element_by_xpath(welcome_field).text.lower()
  

Я хотел бы вывести из тестового модуля conftest или что-то вроде этого — две части кода (см. Ниже):

  1. driver.get(url)
  2.       if window_handle != original_window:
             driver.switch_to.window(window_handle)
             break
      

    Основная проблема в том, что я не понимаю, как правильно определять переменные, такие как URL, исходное окно и т.д.
    Структура проекта на данный момент: conftest в основной папке, подпапка с двумя файлами: test и variables file, которые вы можете увидеть выше на примере теста. Я прошу прощения за то, что не предоставил полный исполняемый код с файлом переменных.