#!/usr/bin/env python # -*- coding: utf-8 -*- ''' @File : conftest.py @Time : 2024/11/06 16:24:10 @Author : dulip3ng @Version : 1.0 @Desc : None ''' import pytest from playwright.sync_api import expect from utils.config import config from pages.locator.login_page_locator import LoginPageLocator from pages.locator.home_page_locator import HomePageLocator from pages.locator.list_page_locator import ListPageLocator from pages.locator.filter_page_locator import FilterPageLocator from pages.locator.push_page_locator import PushPageLocator from pages.locator.head_page_locator import HeadPageLocator from pages.locator.body_page_locator import BodyPageLocator from pages.locator.generate_bill_page_locator import GenerateBillPageLocator from pages.login_page import LoginPage from pages.home_page import HomePage from pages.head_page import HeadPage from pages.body_page import BodyPage from pages.list_page import ListPage from pages.filter_page import FilterPage from pages.push_page import PushPage from pages.generate_bill_page import GenerateBillPage from utils.oracle_helper import OracleHelper expect.set_options(timeout=30000) @pytest.fixture(scope="session") def orcl_helper(): db = OracleHelper(username=config.get("db_username"), password=config.get("db_password"), dsn=config.get("dsn")) db.connect() yield db db.disconnect() @pytest.fixture(scope="module") def page(browser): # 为每个测试用例提供一个新的页面实例 context = browser.new_context(viewport= {"width": 1920, "height": 1080}) page = context.new_page() yield page page.close() context.close() @pytest.fixture(scope="module") def login_page(page): return LoginPage(page, LoginPageLocator) @pytest.fixture(scope="module") def home_page(page): return HomePage(page, HomePageLocator) @pytest.fixture(scope="module") def head_page(page): return HeadPage(page, HeadPageLocator) @pytest.fixture(scope="module") def body_page(page): return BodyPage(page, BodyPageLocator) @pytest.fixture(scope="module") def list_page(page): return ListPage(page, ListPageLocator) @pytest.fixture(scope="module") def filter_page(page): return FilterPage(page, FilterPageLocator) @pytest.fixture(scope="module") def push_page(page): return PushPage(page, PushPageLocator) @pytest.fixture(scope="module") def generate_bill_page(page): head_page = HeadPage(page, HeadPageLocator) body_page = BodyPage(page, BodyPageLocator) return GenerateBillPage(page, GenerateBillPageLocator, head_page, body_page) @pytest.fixture(scope="module", autouse=True) def login(page, login_page, home_page): page.goto(config.get("url")) login_page.login(config.get("db"), config.get("user_name"), config.get("pass_word"))