将测试用例中的测试类移除(如class TestDemoAuto),直接使用测试方法(如def test_demo_auto)

This commit is contained in:
floraachy
2024-10-11 09:15:31 +08:00
parent bb41aeee6d
commit 35db6e727d
2 changed files with 39 additions and 31 deletions

View File

@@ -200,15 +200,19 @@ def gen_case_file(filename, case_template_path, case_common, common_dependence,
marker = is_valid_marker(case_marker)
if marker and isinstance(marker, str):
# 注意这里的4个空格必须要有4个空格
current_case_template.append(f" @pytest.mark.{marker}\n")
# current_case_template.append(f" @pytest.mark.{marker}\n")
# 由于在测试用例中移除了测试类,直接使用测试方法,因此此处不需要空格了,可以直接顶格写
current_case_template.append(f"@pytest.mark.{marker}\n")
if marker and isinstance(marker, dict):
for k, v in marker.items():
# 注意这里的4个空格必须要有4个空格
current_case_template.append(f" @pytest.mark.{k}('{v}')\n")
# current_case_template.append(f" @pytest.mark.{k}('{v}')\n")
# 由于在测试用例中移除了测试类,直接使用测试方法,因此此处不需要空格了,可以直接顶格写
current_case_template.append(f"@pytest.mark.{k}('{v}')\n")
# 将用例数据的名称作为测试用例文件名称, 如test_login_demo
func_name = filename
# 方法名test_demo的类名是TestDemo
class_name = "".join([word.capitalize() for word in func_name.split("_")])
# 方法名test_demo的类名是TestDemo(在测试用例中移除了测试类,直接使用测试方法,所以下行代码注释)
# class_name = "".join([word.capitalize() for word in func_name.split("_")])
if common_dependence:
# 如果存在公共依赖,则对公共依赖进行处理: 识别到模板中的关键字“公共依赖”往下一行插入pytest的fixture作用域级别是class
@@ -240,7 +244,8 @@ def gen_case_file(filename, case_template_path, case_common, common_dependence,
"common_dependence": common_dependence,
"case_data": case_data,
"func_title": func_name,
"class_title": class_name,
# 在测试用例中移除了测试类,直接使用测试方法
# "class_title": class_name,
"now": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}
)
@@ -258,7 +263,8 @@ def gen_case_file(filename, case_template_path, case_common, common_dependence,
"case_markers": case_markers,
"case_data": case_data,
"func_title": func_name,
"class_title": class_name,
# 在测试用例中移除了测试类,直接使用测试方法
# "class_title": class_name,
"now": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
}
)

View File

@@ -1,5 +1,9 @@
# -*- coding: utf-8 -*-
# @Time : ${now}
# @Time : ${DATE} ${TIME}
# @Author : floraachy
# @File : ${NAME}.py
# @Software: ${PRODUCT_NAME}
# @Desc:
# 标准库导入
# 第三方库导入
@@ -19,29 +23,27 @@ cases = ${case_data}
@allure.epic("${allure_epic}")
@allure.feature("${allure_feature}")
class ${class_title}Auto:
@allure.story("${allure_story}")
@pytest.mark.auto
@pytest.mark.parametrize("case", cases, ids=lambda x: x["title"])
def ${func_title}_auto(self, case):
# 前置依赖处理
if case.get("case_dependence") and case["case_dependence"].get("setup"):
dependence_results = dependence_handler.case_dependence_handle(
case_dependence=case["case_dependence"]["setup"],
db_info=GLOBAL_VARS["db_info"])
GLOBAL_VARS.update(dependence_results if dependence_results else {})
# 处理请求前的用例数据 -> 发送请求 -> 响应/数据库断言 -> 断言成功后进行参数提取
if GLOBAL_VARS.get("db_info"):
res = RequestControl().api_request_flow(request_data=case, global_var=GLOBAL_VARS, db_info=GLOBAL_VARS["db_info"])
else:
res = RequestControl().api_request_flow(request_data=case, global_var=GLOBAL_VARS)
GLOBAL_VARS.update(res)
# 后置依赖处理
if case.get("case_dependence") and case["case_dependence"].get("teardown"):
dependence_results = dependence_handler.case_dependence_handle(
case_dependence=case["case_dependence"]["teardown"],
db_info=GLOBAL_VARS["db_info"])
GLOBAL_VARS.update(dependence_results if dependence_results else {})
@allure.story("${allure_story}")
@pytest.mark.auto
@pytest.mark.parametrize("case", cases, ids=lambda x: x["title"])
def ${func_title}_auto(case):
# 前置依赖处理
if case.get("case_dependence") and case["case_dependence"].get("setup"):
dependence_results = dependence_handler.case_dependence_handle(
case_dependence=case["case_dependence"]["setup"],
db_info=GLOBAL_VARS["db_info"])
GLOBAL_VARS.update(dependence_results if dependence_results else {})
# 处理请求前的用例数据 -> 发送请求 -> 响应/数据库断言 -> 断言成功后进行参数提取
if GLOBAL_VARS.get("db_info"):
res = RequestControl().api_request_flow(request_data=case, global_var=GLOBAL_VARS, db_info=GLOBAL_VARS["db_info"])
else:
res = RequestControl().api_request_flow(request_data=case, global_var=GLOBAL_VARS)
GLOBAL_VARS.update(res)
# 后置依赖处理
if case.get("case_dependence") and case["case_dependence"].get("teardown"):
dependence_results = dependence_handler.case_dependence_handle(
case_dependence=case["case_dependence"]["teardown"],
db_info=GLOBAL_VARS["db_info"])
GLOBAL_VARS.update(dependence_results if dependence_results else {})