From a4243cab11fecda42b7c281fdcdb2c38cbbe16e0 Mon Sep 17 00:00:00 2001
From: floraachy <1622042529@qq.com>
Date: Mon, 25 Aug 2025 09:29:12 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0allure=E6=B5=8B=E8=AF=95?=
=?UTF-8?q?=E6=8A=A5=E5=91=8Alogo?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../custom-logo-plugin/static/logo.svg | 2 +-
lib/allure_config/logo.svg | 2 +-
lib/allure_config/logo02.svg | 1 +
lib/allure_config/logo03.svg | 1 +
run.py | 2 --
settings.py | 1 +
test_case/conftest.py | 6 ++--
utils/assertion_utils/assert_control.py | 4 +--
.../case_generate_utils/case_fun_generate.py | 6 ++--
.../case_generate_utils/conftest_template.txt | 6 ++--
utils/data_utils/data_handle.py | 2 +-
utils/data_utils/extract_data_handle.py | 12 ++++----
utils/report_utils/get_results_handle.py | 8 ++---
utils/report_utils/push_allure_report.py | 18 +++++------
utils/report_utils/send_result_handle.py | 6 ++--
utils/requests_utils/base_request.py | 12 ++++----
utils/requests_utils/case_dependence.py | 10 +++----
utils/requests_utils/request_control.py | 30 +++++++++----------
18 files changed, 65 insertions(+), 64 deletions(-)
create mode 100644 lib/allure_config/logo02.svg
create mode 100644 lib/allure_config/logo03.svg
diff --git a/lib/allure-2.22.0/plugins/custom-logo-plugin/static/logo.svg b/lib/allure-2.22.0/plugins/custom-logo-plugin/static/logo.svg
index b864454..09772a5 100644
--- a/lib/allure-2.22.0/plugins/custom-logo-plugin/static/logo.svg
+++ b/lib/allure-2.22.0/plugins/custom-logo-plugin/static/logo.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/lib/allure_config/logo.svg b/lib/allure_config/logo.svg
index b864454..09772a5 100644
--- a/lib/allure_config/logo.svg
+++ b/lib/allure_config/logo.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/lib/allure_config/logo02.svg b/lib/allure_config/logo02.svg
new file mode 100644
index 0000000..b79f59d
--- /dev/null
+++ b/lib/allure_config/logo02.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lib/allure_config/logo03.svg b/lib/allure_config/logo03.svg
new file mode 100644
index 0000000..69b46ad
--- /dev/null
+++ b/lib/allure_config/logo03.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/run.py b/run.py
index 96ae791..e3f7845 100644
--- a/run.py
+++ b/run.py
@@ -63,9 +63,7 @@ from utils.report_utils.allure_handle import generate_allure_report
def run(env, m, report):
try:
# ------------------------ 捕获日志----------------------------
- LOG_LEVEL = "INFO"
capture_logs(level=LOG_LEVEL, filename=os.path.join(LOG_DIR, "service.log"))
-
logger.info(f"""\n\n
_ _ _ _____ _
__ _ _ __ (_) / \\ _ _| |_ __|_ _|__ ___| |_
diff --git a/settings.py b/settings.py
index a2f7321..435785d 100644
--- a/settings.py
+++ b/settings.py
@@ -40,6 +40,7 @@ SEND_RESULT_TYPE = 0
# 指定日志收集级别
LOG_LEVEL = "DEBUG" # 可选值:TRACE DEBUG INFO SUCCESS WARNING ERROR CRITICAL
+LOG_LEVEL_STD = "SUCCESS"
"""
支持的日志级别:
TRACE: 最低级别的日志级别,用于详细追踪程序的执行。
diff --git a/test_case/conftest.py b/test_case/conftest.py
index 5d7a262..56d7e6d 100644
--- a/test_case/conftest.py
+++ b/test_case/conftest.py
@@ -24,15 +24,15 @@ def case_control(request):
# 使用 request.getfixturevalue() 方法来获取测试用例函数的参数值
# 注意这里的"case"需要与@pytest.mark.parametrize("case", cases)中传递的保持一致
case = request.getfixturevalue("case")
- logger.info("\n\n-----------------------------START-开始执行用例-----------------------------\n\n")
+ logger.info(f"\n-----------------------------START-开始执行用例- {case.get("id")} || {case.get("title")}-----------------------------")
# 添加用例标题作为allure中显示的用例标题
allure_title(case.get("title", ""))
if case.get("run") is None or case.get("run") is False:
- reason = f"{case.get('title')}: 标记了该用例为false,不执行\\n"
+ reason = f"{case.get("id")} || {case.get("title")}: 标记了该用例不执行(run=False)。"
logger.warning(f"{reason}")
pytest.skip(reason)
yield
- logger.info("\n\n-----------------------------END-用例执行完成-----------------------------\n\n")
+ logger.info("-----------------------------END-用例执行完成-----------------------------")
def pytest_collection_modifyitems(config, items):
diff --git a/utils/assertion_utils/assert_control.py b/utils/assertion_utils/assert_control.py
index af74f27..d9b6e21 100644
--- a/utils/assertion_utils/assert_control.py
+++ b/utils/assertion_utils/assert_control.py
@@ -125,7 +125,7 @@ class AssertUtils:
expect_value = self.get_expect_value
message = str(self.get_message)
assert_type = self.get_assert_type
- logger.debug(f"\nmessage: {message}\n"
+ logger.trace(f"\nmessage: {message}\n"
f"assert_type: {assert_type}\n"
f"expect_value: {expect_value}\n"
f"actual_value: {actual_value}\n")
@@ -150,7 +150,7 @@ class AssertHandle(AssertUtils):
else:
assert_list.append(v)
else:
- logger.debug(f"断言数据为空或者不是字典格式,跳过断言!\n"
+ logger.trace(f"断言数据为空或者不是字典格式,跳过断言!\n"
f"断言数据:{self.assert_data}")
return assert_list
diff --git a/utils/case_generate_utils/case_fun_generate.py b/utils/case_generate_utils/case_fun_generate.py
index 3674a4e..cad6b71 100644
--- a/utils/case_generate_utils/case_fun_generate.py
+++ b/utils/case_generate_utils/case_fun_generate.py
@@ -45,7 +45,7 @@ def __load_yaml_data(file):
if os.path.basename(file) == "init_data.yaml" or os.path.basename(file) == "init_data.yml":
"""识别到init_data.yaml或者init_data.yml文件,自动生成conftest.py文件"""
os.makedirs(os.path.dirname(file), exist_ok=True)
- logger.debug(f"识别到init_data.yaml或者init_data.yml文件,自动生成conftest.py文件")
+ logger.trace(f"识别到init_data.yaml或者init_data.yml文件,自动生成conftest.py文件")
generate_conftest_file(
template_path=CONFTEST_TEMPLATE_DIR,
init_data=yaml_data,
@@ -74,7 +74,7 @@ def __load_yaml_data(file):
if os.path.basename(file) == "init_data.yaml" or os.path.basename(file) == "init_data.yml":
"""识别到init_data.yaml或者init_data.yml文件,自动生成conftest.py文件"""
os.makedirs(os.path.dirname(file), exist_ok=True)
- logger.debug(f"识别到init_data.yaml或者init_data.yml文件,自动生成conftest.py文件")
+ logger.trace(f"识别到init_data.yaml或者init_data.yml文件,自动生成conftest.py文件")
generate_conftest_file(
template_path=CONFTEST_TEMPLATE_DIR,
init_data=yaml_data,
@@ -208,7 +208,7 @@ def gen_case_file(filename, case_template_path, config, common_dependence, case_
# 这里是预计往 @pytest.mark.parametrize( 这一行的上面插入标记
if content.strip().startswith('@pytest.mark.parametrize('):
# 往测试用例模板中插入自定义标记
- # logger.debug(f"获取到的pytest_markers:{pytest_markers}, {type(pytest_markers)}")
+ # logger.trace(f"获取到的pytest_markers:{pytest_markers}, {type(pytest_markers)}")
for case_marker in pytest_markers:
# 获取符合要求格式的自定义标记名称,并插入到测试模板中
marker = is_valid_marker(case_marker)
diff --git a/utils/case_generate_utils/conftest_template.txt b/utils/case_generate_utils/conftest_template.txt
index 9f14c65..fe7a845 100644
--- a/utils/case_generate_utils/conftest_template.txt
+++ b/utils/case_generate_utils/conftest_template.txt
@@ -20,10 +20,10 @@ def init_data():
运行测试之前,初始化数据;
运行测试之后,清理数据
"""
- logger.debug(f"打印一下全局变量:{GLOBAL_VARS}")
+ logger.trace(f"打印一下全局变量:{GLOBAL_VARS}")
dependence_handler = CaseDependenceHandler(GLOBAL_VARS)
init_data = ${init_data}
- logger.info("Start ----- 开始初始化数据...")
+ logger.debug("Start ----- 开始初始化数据...")
if init_data.get("setup"):
dependence_results = dependence_handler.case_dependence_handle(
case_dependence=init_data["setup"],
@@ -37,4 +37,4 @@ def init_data():
GLOBAL_VARS.update(dependence_results if dependence_results else {})
- logger.info("End ----- 初始化数据完成!")
\ No newline at end of file
+ logger.debug("End ----- 初始化数据完成!")
\ No newline at end of file
diff --git a/utils/data_utils/data_handle.py b/utils/data_utils/data_handle.py
index da88acf..7e95b55 100644
--- a/utils/data_utils/data_handle.py
+++ b/utils/data_utils/data_handle.py
@@ -136,7 +136,7 @@ class DataHandle:
"""
for key, funcs in funcs.items(): # 遍历方法字典调用并替换
func = funcs[1]
- # logger.debug("invoke func : ", func)
+ # logger.trace("invoke func : ", func)
try:
if "." in func:
if func.startswith("faker."):
diff --git a/utils/data_utils/extract_data_handle.py b/utils/data_utils/extract_data_handle.py
index 7efa602..99bd93d 100644
--- a/utils/data_utils/extract_data_handle.py
+++ b/utils/data_utils/extract_data_handle.py
@@ -25,13 +25,13 @@ def json_extractor(obj, expr: str = '.'):
"""
try:
result = jsonpath(obj, expr)[0] if len(jsonpath(obj, expr)) == 1 else jsonpath(obj, expr)
- logger.debug(f"\n提取对象:{obj}\n"
+ logger.trace(f"\n提取对象:{obj}\n"
f"提取表达式: {expr} \n"
f"提取值类型: {type(result)}\n"
f"提取结果:{result}\n")
return result
except Exception as e:
- logger.debug(f"\n提取对象:{obj}\n"
+ logger.trace(f"\n提取对象:{obj}\n"
f"提取表达式: {expr}\n"
f"提取对象: {obj}\n"
f"错误信息:{e}\n")
@@ -48,13 +48,13 @@ def re_extract(obj: str, expr: str = '.'):
# 如果提取后的数据长度为1,则取第一个元素(返回str),否则返回列表
result = re.findall(expr, obj)[0] if len(re.findall(expr, obj)) == 1 else re.findall(expr, obj)
# 由于提取出来的数据都是str格式,将eval一样,还原数据格式
- logger.debug(f"\n提取对象:{obj}\n"
+ logger.trace(f"\n提取对象:{obj}\n"
f"提取表达式: {expr}\n"
f"提取值类型: {type(result)}\n"
f"提取结果:{result}\n")
return result
except Exception as e:
- logger.debug(f"\n提取对象:{obj}\n"
+ logger.trace(f"\n提取对象:{obj}\n"
f"提取表达式: {expr}\n"
f"提取对象: {obj}\n"
f"错误信息:{e}\n")
@@ -69,7 +69,7 @@ def response_extract(response: Response, expr: str = '.'):
"""
try:
result = eval(expr)
- logger.debug(f"\n提取表达式: {expr}\n"
+ logger.trace(f"\n提取表达式: {expr}\n"
f"提取值类型: {type(result)}\n"
f"提取结果:{result}\n")
# 将从Response对象提取的cookiejar对象转换为dict格式, 避免后续使用cookies的时候出现类型错误
@@ -77,7 +77,7 @@ def response_extract(response: Response, expr: str = '.'):
result = utils.dict_from_cookiejar(result)
return result
except Exception as e:
- logger.debug(f"\n提取表达式: {expr}\n"
+ logger.trace(f"\n提取表达式: {expr}\n"
f"提取对象: {response}\n"
f"错误信息:{e}\n")
diff --git a/utils/report_utils/get_results_handle.py b/utils/report_utils/get_results_handle.py
index 36e34ac..24c7938 100644
--- a/utils/report_utils/get_results_handle.py
+++ b/utils/report_utils/get_results_handle.py
@@ -25,9 +25,9 @@ def get_test_results_from_from_allure_report(allure_html_path):
data = json.load(file)
case_count = data['statistic']
_time = data['time']
- logger.debug(f"获取到的data是:{data}")
- logger.debug(f"获取到的_time是:{data['time']}")
- logger.debug(f"获取到的start是:{_time['start']}")
+ logger.trace(f"获取到的data是:{data}")
+ logger.trace(f"获取到的_time是:{data['time']}")
+ logger.trace(f"获取到的start是:{_time['start']}")
keep_keys = {"passed", "failed", "broken", "skipped", "total"}
test_results = {k: v for k, v in data['statistic'].items() if k in keep_keys}
# 判断运行用例总数大于0
@@ -56,7 +56,7 @@ def get_test_results_from_from_allure_report(allure_html_path):
env_data = json.load(file)
for data in env_data:
test_results[data['name']] = data["values"][0]
- logger.debug(f"获取到的测试结果:{test_results}")
+ logger.trace(f"获取到的测试结果:{test_results}")
return test_results
except FileNotFoundError as e:
logger.error(f"程序中检查到您未生成allure报告,通常可能导致的原因是allure环境未配置正确,{e}")
diff --git a/utils/report_utils/push_allure_report.py b/utils/report_utils/push_allure_report.py
index edc84e7..557f496 100644
--- a/utils/report_utils/push_allure_report.py
+++ b/utils/report_utils/push_allure_report.py
@@ -41,18 +41,18 @@ def push_allure_report(allure_report_dir: str, remote_url: str, username: str, p
repo_name = remote_url[:-4].split("/")[-1]
repo_path = os.path.join(os.path.dirname(allure_report_dir), repo_name)
print(f"本地仓库地址:{repo_path}")
- logger.info(f"本地仓库地址:{repo_path}")
+ logger.debug(f"本地仓库地址:{repo_path}")
try:
# 检查目录是否存在
if os.path.exists(repo_path):
print(f"目录已存在,正在删除: {repo_path}")
- logger.info(f"目录已存在,正在删除: {repo_path}")
+ logger.debug(f"目录已存在,正在删除: {repo_path}")
shutil.rmtree(repo_path) # 删除目录及其内容
# 重新创建目录
os.makedirs(repo_path)
- logger.info(f"目录已重新创建: {repo_path}")
+ logger.debug(f"目录已重新创建: {repo_path}")
print(f"目录已重新创建: {repo_path}")
except Exception as e:
logger.error(f"操作失败: {e}")
@@ -62,27 +62,27 @@ def push_allure_report(allure_report_dir: str, remote_url: str, username: str, p
# -------------初始化本地仓库并提交代码 -----------------
subprocess.run(["git", "-C", repo_path, "init"], check=True)
print("初始化本地仓库成功")
- logger.info("初始化本地仓库成功")
+ logger.debug("初始化本地仓库成功")
auth_remote_url = f"https://{username}:{password}@{remote_url.split("//")[-1]}"
print(f"添加远程仓库: {auth_remote_url}")
- logger.info(f"添加远程仓库: {auth_remote_url}")
+ logger.debug(f"添加远程仓库: {auth_remote_url}")
subprocess.run(["git", "-C", repo_path, "remote", "add", "origin", auth_remote_url], check=True)
print("复制 Allure HTML报告所有文件到本地仓库")
- logger.info("复制 Allure HTML报告所有文件到本地仓库")
+ logger.debug("复制 Allure HTML报告所有文件到本地仓库")
copy_all_files(src_dir=allure_report_dir, dst_dir=repo_path)
print("将更改添加到暂存区")
- logger.info("将更改添加到暂存区")
+ logger.debug("将更改添加到暂存区")
subprocess.run(["git", "-C", repo_path, "add", "."], check=True)
print("提交更改")
- logger.info("提交更改")
+ logger.debug("提交更改")
subprocess.run(["git", "-C", repo_path, "commit", "-m", message], check=True)
print("强制推送代码")
- logger.info("强制推送代码")
+ logger.debug("强制推送代码")
subprocess.run(["git", "-C", repo_path, "push", "--force", "origin", branch], check=True)
print("Allure 报告推送成功!")
diff --git a/utils/report_utils/send_result_handle.py b/utils/report_utils/send_result_handle.py
index 72e7d1f..f10485c 100644
--- a/utils/report_utils/send_result_handle.py
+++ b/utils/report_utils/send_result_handle.py
@@ -44,7 +44,7 @@ def send_dingding(webhook_url, secret, title, content):
dingding = DingTalkBot(webhook_url=webhook_url, secret=secret)
res = dingding.send_markdown(title=title, text=content, is_at_all=True)
if res:
- logger.info(f"发送钉钉通知成功~")
+ logger.debug(f"发送钉钉通知成功~")
else:
logger.error(f"发送钉钉通知失败~")
except Exception as e:
@@ -62,7 +62,7 @@ def send_wechat(webhook_url, content, attachment=None):
if attachment:
file = wechat.send_file(wechat.upload_file(attachment))
if file:
- logger.info(f"发送企业微信通知(包括文本以及附件)成功~")
+ logger.debug(f"发送企业微信通知(包括文本以及附件)成功~")
else:
logger.error(f"发送企业微信通知(附件)失败~")
else:
@@ -80,7 +80,7 @@ def send_result(report_info: dict, report_path: str, attachment_path: str = None
"""
# 默认不发送任何通知
if SEND_RESULT_TYPE == NotificationType.DEFAULT.value:
- logger.debug(f"SEND_RESULT_TYPE={SEND_RESULT_TYPE}, 配置了不发送任何邮件")
+ logger.trace(f"SEND_RESULT_TYPE={SEND_RESULT_TYPE}, 配置了不发送任何邮件")
return
results = get_test_results_from_from_allure_report(report_path)
diff --git a/utils/requests_utils/base_request.py b/utils/requests_utils/base_request.py
index a70d526..4bc47a1 100644
--- a/utils/requests_utils/base_request.py
+++ b/utils/requests_utils/base_request.py
@@ -67,7 +67,7 @@ class BaseRequest:
传递的参数会被编码为JSON格式并包含在请求体中。
需要注意的是,使用这种方式传递的参数必须是可序列化为JSON的数据类型(如字典、列表、整数、浮点数、布尔值或None)。对于不可序列化的数据类型(如文件或其他自定义对象),需要先进行序列化。
"""
- logger.debug("发送请求:\n"
+ logger.trace("发送请求:\n"
"request_type=json\n"
f"method={method}\n"
f"url={url}\n"
@@ -90,7 +90,7 @@ class BaseRequest:
params: 这是通过URL传递参数的方式。所有传递的参数都会被编码到URL中。requests库会自动处理这些参数的编码。
需要注意的是,这种方式只适用于简单的键值对,对于复杂的数据结构,如列表或字典,需要先进行序列化。
"""
- logger.debug("发送请求:\n"
+ logger.trace("发送请求:\n"
"request_type=params\n"
f"method={method}\n"
f"url={url}\n"
@@ -114,7 +114,7 @@ class BaseRequest:
这些参数通常需要通过requests库提供的data参数来传递,并且在发送请求时,需要设置Content-Type为application/x-www-form-urlencoded或multipart/form-data。
对于简单的键值对,可以直接将它们作为字典传递给data参数;对于复杂的数据结构,需要先进行序列化。
"""
- logger.debug("发送请求:\n"
+ logger.trace("发送请求:\n"
"request_type=data\n"
f"method={method}\n"
f"url={url}\n"
@@ -152,7 +152,7 @@ class BaseRequest:
返回:
- requests.Response: 发送请求后的响应对象。
"""
- logger.debug("发送请求:\n"
+ logger.trace("发送请求:\n"
"request_type=file\n"
f"method={method}\n"
f"url={url}\n"
@@ -192,7 +192,7 @@ class BaseRequest:
@classmethod
def request_type_for_none(cls, method: Text, url: Text, headers: Optional[Dict], **kwargs):
"""处理 requestType 为 None"""
- logger.debug("发送请求:\n"
+ logger.trace("发送请求:\n"
"request_type=none\n"
f"method={method}\n"
f"url={url}\n"
@@ -209,6 +209,6 @@ class BaseRequest:
@classmethod
def request_type_for_export(cls, method: Text, url: str, headers: Optional[Dict], **kwargs):
"""判断 requestType 为 export 导出类型"""
- logger.debug("requestType 为 export 类型")
+ logger.trace("requestType 为 export 类型")
# todo 后续有需求再补充
return ""
diff --git a/utils/requests_utils/case_dependence.py b/utils/requests_utils/case_dependence.py
index c6846df..d14bfd5 100644
--- a/utils/requests_utils/case_dependence.py
+++ b/utils/requests_utils/case_dependence.py
@@ -31,7 +31,7 @@ class CaseDependenceHandler:
for key, value in variables.items():
new_value = data_handle(value, self.source)
allure_step(f"依赖环境变量 --> {key}={new_value}")
- logger.info(f"依赖环境变量 --> {key}={new_value}")
+ logger.debug(f"依赖环境变量 --> {key}={new_value}")
self.source.update({key: new_value})
def handle_interfaces(self, interfaces):
@@ -54,7 +54,7 @@ class CaseDependenceHandler:
sql = db_item["sql"]
sql_result = mysql.query_all(sql)
allure_step(f"依赖的数据库sql:{sql}, 查询结果:{sql_result}")
- logger.info(f"依赖的数据库sql:{sql}, 查询结果:{sql_result}")
+ logger.debug(f"依赖的数据库sql:{sql}, 查询结果:{sql_result}")
db_item.pop("sql")
for extraction_type, extractions in db_item.items():
@@ -63,13 +63,13 @@ class CaseDependenceHandler:
res = json_extractor(sql_result, path)
self.source.update({key: res})
allure_step(f"通过jsonpath方式从数据库提取参数:{key}:{res}")
- logger.debug(f"通过jsonpath方式从数据库提取参数:{key}:{res}")
+ logger.trace(f"通过jsonpath方式从数据库提取参数:{key}:{res}")
elif extraction_type.lower() == "type_re":
for key, pattern in extractions.items():
res = re_extract(str(sql_result), pattern)
self.source.update({key: res})
allure_step(f"通过正则表达式从数据库提取参数:{key}:{res}")
- logger.info(f"通过正则表达式从数据库提取参数:{key}:{res}")
+ logger.debug(f"通过正则表达式从数据库提取参数:{key}:{res}")
else:
logger.error(f"提取方式: {extraction_type} 错误,仅支持type_jsonpath、type_re两种")
else:
@@ -81,7 +81,7 @@ class CaseDependenceHandler:
先处理环境变量依赖,再处理接口依赖,最后处理SQL依赖
"""
if not case_dependence:
- logger.debug("跳过用例依赖处理")
+ logger.trace("跳过用例依赖处理")
allure_step("跳过用例依赖处理")
return self.source
diff --git a/utils/requests_utils/request_control.py b/utils/requests_utils/request_control.py
index a7ffe31..049c0e1 100644
--- a/utils/requests_utils/request_control.py
+++ b/utils/requests_utils/request_control.py
@@ -40,12 +40,12 @@ class RequestControl(BaseRequest):
"""
api_data = []
if os.path.isdir(api_file_path):
- logger.debug(f"目标路径是一个目录:{api_file_path}")
+ logger.trace(f"目标路径是一个目录:{api_file_path}")
api_files = get_files(target=api_file_path, end=".yaml") + get_files(target=api_file_path, end=".yml")
for api_file in api_files:
api_data.append(load_yaml_file(api_file))
elif os.path.isfile(api_file_path):
- logger.debug(f"目标路径是一个文件:{api_file_path}")
+ logger.trace(f"目标路径是一个文件:{api_file_path}")
api_data.append(load_yaml_file(api_file_path))
else:
@@ -56,7 +56,7 @@ class RequestControl(BaseRequest):
if api.get("teststeps"):
matching_api = next((item for item in api["teststeps"] if item["id"] == key), None)
if matching_api:
- logger.info("\n----------匹配到的api----------\n"
+ logger.debug("\n----------匹配到的api----------\n"
f"类型:{type(matching_api)}"
f"值:{matching_api}\n")
return matching_api
@@ -162,7 +162,7 @@ class RequestControl(BaseRequest):
针请求前,对接口数据进行处理,识别用例数据中的关键字${xxxx},使用全局变量进行替换或者执行关键字中的方法替换为具体值
"""
try:
- logger.debug(f"\n======================================================\n" \
+ logger.trace(f"\n======================================================\n" \
"-------------用例数据处理前--------------------\n"
f"用例ID: {type(request_data.get('id', None))} || {request_data.get('id', None)}\n" \
f"用例优先级(severity): {type(request_data.get('severity', None))} || {request_data.get('severity', None)}\n" \
@@ -198,7 +198,7 @@ class RequestControl(BaseRequest):
"case_dependence": request_data.get("case_dependence")
}
- logger.debug("\n-------------用例数据处理后--------------------\n"
+ logger.trace("\n-------------用例数据处理后--------------------\n"
f"用例ID: {type(new_request_data.get('id', None))} || {new_request_data.get('id', None)}\n" \
f"用例优先级(severity): {type(new_request_data.get('severity', None))} || {new_request_data.get('severity', None)}\n" \
f"用例标题(title): {type(new_request_data.get('title', None))} || {new_request_data.get('title', None)}\n" \
@@ -215,7 +215,7 @@ class RequestControl(BaseRequest):
f"后置提取参数(extract): {type(new_request_data.get('extract', None))} || {new_request_data.get('extract', None)}\n" \
f"用例依赖(case_dependence): {type(new_request_data.get('case_dependence', None))} || {new_request_data.get('case_dependence', None)}\n"
"=====================================================")
- logger.debug(new_request_data)
+ logger.trace(new_request_data)
return new_request_data
except Exception as e:
logger.error(f"接口数据处理异常:{e}")
@@ -256,7 +256,7 @@ class RequestControl(BaseRequest):
f"响应数据: {response_result}\n" \
f"响应耗时: {response_time_seconds} s || {response_time_millisecond} ms\n" \
+ "=" * 80
- logger.info(_res)
+ logger.debug(_res)
allure_step(f"ID: {key}")
allure_step(f"标题: {title}")
allure_step(f"请求URL: {url}")
@@ -281,10 +281,10 @@ class RequestControl(BaseRequest):
"""
extract = api_data.get("extract")
if not extract:
- logger.info(f"断言成功后不需要进行提取操作,extract={extract}")
+ logger.debug(f"断言成功后不需要进行提取操作,extract={extract}")
return None
- logger.info(f"断言成功后需要进行提取操作,extract={extract}")
+ logger.debug(f"断言成功后需要进行提取操作,extract={extract}")
case_results = {}
response_results = {}
@@ -338,9 +338,9 @@ class RequestControl(BaseRequest):
response_results.update(extract_data(response, {k: v}))
result = {**case_results, **response_results, **database_results}
- logger.info(f"--用例提取结果 --> {case_results} --")
- logger.info(f"--响应提取结果 --> {response_results} --")
- logger.info(f"--数据库提取结果 --> {database_results} --")
+ logger.debug(f"--用例提取结果 --> {case_results} --")
+ logger.debug(f"--响应提取结果 --> {response_results} --")
+ logger.debug(f"--数据库提取结果 --> {database_results} --")
return result
@@ -376,10 +376,10 @@ class RequestControl(BaseRequest):
response = self.send_request(new_api_data)
# 根据配置,增加接口请求等待时间。适应部分请求调用后,需要进行内置数据处理的问题
- logger.debug(f"开始等待")
+ logger.trace(f"开始等待")
if new_api_data.get("wait_seconds"):
time.sleep(new_api_data["wait_seconds"])
- logger.debug(f"结束等待")
+ logger.trace(f"结束等待")
new_api_data["status_code"] = response.status_code
new_api_data["response_time_seconds"] = round(response.elapsed.total_seconds(), 2)
@@ -401,6 +401,6 @@ class RequestControl(BaseRequest):
# 将接口请求参数payload的值保存到save_api_data中
save_api_data.update({"_payload": new_api_data["payload"]} if new_api_data.get("payload") else {})
- logger.debug(f"接口请求完成后,接口请求数据payload,响应数据 & 提取数据 save_api_data={save_api_data}")
+ logger.trace(f"接口请求完成后,接口请求数据payload,响应数据 & 提取数据 save_api_data={save_api_data}")
allure_step(f"接口请求完成后,接口请求数据payload,响应数据 & 提取数据 save_api_data={save_api_data}")
return save_api_data