代码拉取完成,页面将自动刷新
from utils import connections_map, YamlHandle
from utils.read_file_tools.path_control import get_all_yaml_file
from utils.logging_tools.logger import log
from utils.other_tools.allure_tools.allure_data_clean import AllureFileClean
from utils.cache_tools.cache_control import CaCheControl
from utils.other_tools.models import TestCaseEnum
def pytest_collection_modifyitems(session, config, items):
"""
item表示每个测试用例,解决用例名称中文显示问题
"""
for item in items:
item.name = item.name.encode("utf-8").decode("unicode-escape")
item._nodeid = item.nodeid.encode("utf-8").decode("unicode-escape")
def pytest_sessionstart():
"""执行用例时,会遍历所有yaml文件key以及对应的路径增加到缓存"""
path_all = CaCheControl.add_yaml_key_cache()
CaCheControl().set_cache(path_all)
def pytest_unconfigure():
"""结束用例执行时,会删除缓存文件"""
CaCheControl().del_folder()
# AllureFileClean().allure_environment()
for env__, pool__ in connections_map.items():
pool__.close()
def pytest_terminal_summary(terminalreporter):
"""执行时机: 生成测试报告后"""
total_use_cases = 0
def count_stats_exist(stats_type):
if isinstance(terminalreporter.stats.get(stats_type, 0), list):
stats = len(terminalreporter.stats.get(stats_type, 0))
nonlocal total_use_cases
if stats_type in list(test_case_types.values())[:5]:
total_use_cases += stats
return stats
return 0
test_case_types = {
'因为错误而失败的测试用例数': 'error',
'断言失败的测试用例数': 'failed',
'成功通过的测试用例数': 'passed',
'跳过的测试用例数': 'skipped',
'未选择的测试用例数': 'deselected',
'预期会失败但实际通过的测试用例数': 'xfailed',
'预期会失败实际上也失败了的测试用例数': 'xpassed',
'产生警告的测试用例数': 'warnings'
}
log_msg_parts = [
f"\n执行接口总数:{sum(len(v) for v in terminalreporter.stats.values() if isinstance(v, list))}\n",
]
for description, case_type in test_case_types.items():
log_msg_parts.append(f"{description}:{count_stats_exist(case_type)}\n")
context = f"{'*'.ljust(190, '*')}\n"
log_msg_parts.append(context)
log_msg = ''.join(log_msg_parts)
log.debug(f"{context}"
f"执行用例总数:{total_use_cases}"
f"{log_msg}")
def pytest_runtest_protocol(item, nextitem):
"""每个用例执行时出发"""
return None
def get_tests_from_yaml():
def test_case_config():
"""
file_name: 指定单个文件或多个文件,并执行指定文件内的用例, 空字符串默认执行所有文件用例
:return file_test_case_id
case_name: 指定单个或者多个用例名称,并执行指定用例
:return test_case_id
"""
file_name = []
file_test_case_id = []
for file in file_name:
test_case_id = YamlHandle(file).get_yaml_all_key()
file_test_case_id.extend(test_case_id)
test_case_id = ["get_native_login_verify_case"]
test_case_all = CaCheControl().get_test_case_all()
return test_case_id
case_list = test_case_config()
case_ids, case_data_list = [], []
for case in case_list:
case_data = CaCheControl.get_cache_data(case)
case_data_list.append(case_data)
case_ids.append(case_data.get(TestCaseEnum.DETAIL.value[0], "未定义的接口"))
test_params = {
"argvalues": case_data_list,
"ids": case_ids
}
return test_params
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。