From 35db6e727dca6623db75450d12fd929f5cd53149 Mon Sep 17 00:00:00 2001 From: floraachy <1622042529@qq.com> Date: Fri, 11 Oct 2024 09:15:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=B5=8B=E8=AF=95=E7=B1=BB=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=EF=BC=88=E5=A6=82class=20TestDemoAuto=EF=BC=89=EF=BC=8C?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E4=BD=BF=E7=94=A8=E6=B5=8B=E8=AF=95=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=88=E5=A6=82def=20test=5Fdemo=5Fauto=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../case_generate_utils/case_fun_generate.py | 18 ++++--- utils/case_generate_utils/case_template.txt | 52 ++++++++++--------- 2 files changed, 39 insertions(+), 31 deletions(-) diff --git a/utils/case_generate_utils/case_fun_generate.py b/utils/case_generate_utils/case_fun_generate.py index 649cc93..0ab73c4 100644 --- a/utils/case_generate_utils/case_fun_generate.py +++ b/utils/case_generate_utils/case_fun_generate.py @@ -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') } ) diff --git a/utils/case_generate_utils/case_template.txt b/utils/case_generate_utils/case_template.txt index 1db0af4..e73fac7 100644 --- a/utils/case_generate_utils/case_template.txt +++ b/utils/case_generate_utils/case_template.txt @@ -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 {})