1 Star 1 Fork 0

JIN/study_demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
conftest.py 3.69 KB
一键复制 编辑 原始数据 按行查看 历史
JIN 提交于 2023-12-05 17:23 . study
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
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/chen_jiabao/study_demo.git
git@gitee.com:chen_jiabao/study_demo.git
chen_jiabao
study_demo
study_demo
master

搜索帮助