1. 增加测试数据分析预警机制 2. 优化自动生成测试用例方法 3. 将用例跳过方法 提取成公共的fixture,自动运行 4. 修改pytet-html测试报告列’用例描述’值获取 5. 根 据最新修改,更新readme文件~

This commit is contained in:
floraachy
2023-06-09 15:04:32 +08:00
parent 4646bd7fed
commit 05f34366af
21 changed files with 498 additions and 129 deletions
+17 -19
View File
@@ -1,31 +1,33 @@
# -*- coding: utf-8 -*-
# @Time : ${now}
import pytest
from case_utils.assert_handle import assert_response, assert_sql
from loguru import logger
from case_utils.request_data_handle import RequestPreDataHandle, RequestHandle, after_request_extract
from pytest_html import extras # 往pytest-html报告中填写额外的内容
from common_utils.func_handle import add_docstring
from case_utils.allure_handle import allure_title
import allure
from config.settings import db_info
from config.global_vars import GLOBAL_VARS
# 用例数据
cases = ${case_data}
@allure.story(f'{cases["case_common"]["allure_story"]}')
@pytest.mark.${func_title}
@pytest.mark.auto
@pytest.mark.parametrize("case", cases.get("case_info"))
def ${func_title}_auto(case, extra):
logger.info("-----------------------------START-开始执行用例-----------------------------")
logger.debug(f"当前执行的用例数据:{case}")
# 给当前测试方法添加文档注释
add_docstring(case.get("title", ""))(${func_title}_auto)
# 添加用例标题作为allure中显示的用例标题
allure_title(case.get("title", ""))
if case.get("run", None):
@allure.epic("${allure_epic}")
@allure.feature("${allure_feature}")
class ${class_title}Auto:
@allure.story("${allure_story}")
@pytest.mark.${func_title}
@pytest.mark.auto
@pytest.mark.parametrize("case", cases, ids=["{}".format(case["title"]) for case in cases])
def ${func_title}_auto(self, case, extra):
logger.info("-----------------------------START-开始执行用例-----------------------------")
logger.debug(f"当前执行的用例数据:{case}")
# 添加用例标题作为allure中显示的用例标题
allure_title(case.get("title", ""))
# 处理请求前的用例数据
case_data = RequestPreDataHandle(case).request_data_handle()
# 将用例数据显示在pytest-html报告中
@@ -40,9 +42,5 @@ def ${func_title}_auto(case, extra):
assert_sql(db_info[GLOBAL_VARS["env_key"]], case_data["assert_sql"])
# 断言成功后进行参数提取
after_request_extract(response, case_data.get("extract", None))
else:
reason = f"标记了该用例为false,不执行\\n"
logger.warning(f"{reason}")
pytest.skip(reason)
logger.info("-----------------------------END-用例执行结束-----------------------------")
logger.info("-----------------------------END-用例执行结束-----------------------------")