Files
WebAutoTest/conftest.py
CNWei 5a50eb8289 feat: 优化定位转换器调整框架结构
- 新增 finder.py 重构定位转换器
- 优化 .gitignore 文件
- 其他优化
2026-01-25 17:24:04 +08:00

95 lines
2.3 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 logging
import allure
from pytest_xlsx.file import XlsxItem
from POM.page.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]))