init: 初始化项目
- 创建了基本的项目结构 - 添加了 .gitignore 文件 - 配置了基本的开发环境 - 添加清华镜像源 - 设置了基础的文件夹和文件(如 commons, utils, POM, pytest.ini) 项目说明: - [项目名称]:Web自动化测试 - [项目描述]:基于pytest,selenium的自动化测试工具 - [开发环境]:Python
This commit is contained in:
99
conftest.py
Normal file
99
conftest.py
Normal file
@@ -0,0 +1,99 @@
|
||||
#!/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]))
|
||||
Reference in New Issue
Block a user