Files
WebAutoTest/conftest.py
CNWei 92d06dd9cf init: 初始化项目
- 创建了基本的项目结构
- 添加了 .gitignore 文件
- 配置了基本的开发环境
- 添加清华镜像源
- 设置了基础的文件夹和文件(如 commons, utils, POM, pytest.ini)

项目说明:
- [项目名称]:Web自动化测试
- [项目描述]:基于pytest,selenium的自动化测试工具
- [开发环境]:Python
2025-04-14 23:05:39 +08:00

100 lines
2.4 KiB
Python

#!/usr/bin/env python
# coding=utf-8
"""
@author: CNWei
@Software: PyCharm
@contact: t6i888@163.com
@file: conftest
@date: 2025/4/2 21:57
@desc:
"""
import json
import logging
from itertools import chain
import inspect
import allure
from pytest_xlsx.file import XlsxItem
import pytest
from selenium.webdriver import Chrome
from POM.login_page import LoginPage
from commons.driver import KeyWordDriver
from utils.file_processors.file_handle import FileHandle
from commons.templates import Template
from commons.settings import configs
logger = logging.getLogger(__name__)
# @pytest.fixture()
def login_ok():
username = configs.username
password = configs.password
login = LoginPage()
logger.debug("fixture-login_ok 我被执行了!!!")
login.login(username, password)
yield login.driver
login.driver.quit()
file = FileHandle(configs.variable)
def use_cases_converter(xlsx_item: dict) -> list:
# 变量替换
logger.info(f"变量替换前: {xlsx_item}")
step_str = FileHandle.to_string(xlsx_item)
xlsx_item = FileHandle.to_dict(Template(step_str).render(file))
logger.info(f"变量替换: {xlsx_item}")
new_values = []
value = list(xlsx_item.values())
for item in value:
if not isinstance(item, list):
new_values.append(item)
else:
new_values.extend(item)
logger.info(f"转换后的测试用例: <===={new_values}")
return new_values
kwd = KeyWordDriver()
# hook(钩子)
def pytest_xlsx_run_step(item: XlsxItem):
step = item.current_step
logger.info(f"转换前的测试用例: ====>{step}")
step = use_cases_converter(step)
# print(step)
content = slice(1, 2)
key = slice(2, 3)
values = slice(3, None)
remark = step[content].pop()
keyword = step[key].pop()
_arges = [item for item in step[values] if item is not None]
logger.info(f"标记: {keyword} -- 参数: {_arges}")
try:
func = getattr(kwd, keyword)
logger.info(f"当前执行的操作:{func.__name__}")
func(*_arges)
except AttributeError as e:
logger.error(f'标记 {keyword} 错误: {e}')
raise e
if remark:
# 截图
png = kwd.driver.get_screenshot_as_png() # 保留为二进制格式
# 将截图报错附加到allure
allure.attach(png, remark, allure.attachment_type.PNG)
if __name__ == '__main__':
print(bool([1, 2, 3]))