refactor(): 优化测试用例数据的处理,优化代码结构
- 新增用例生成器和注册器 - 优化文件处理
This commit is contained in:
57
commons/file_processors/processor_factory.py
Normal file
57
commons/file_processors/processor_factory.py
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env python
|
||||
# coding=utf-8
|
||||
|
||||
"""
|
||||
@author: CNWei
|
||||
@Software: PyCharm
|
||||
@contact: t6i888@163.com
|
||||
@file: file_handle
|
||||
@date: 2025/3/7 09:31
|
||||
@desc:
|
||||
"""
|
||||
from pathlib import Path
|
||||
from typing import Type, Union
|
||||
|
||||
from commons.file_processors.base_processor import BaseFileProcessor
|
||||
from commons.file_processors.yaml_processor import YamlProcessor
|
||||
from commons.file_processors.json_processor import JsonProcessor
|
||||
|
||||
# 类型别名,表示处理器类的字典
|
||||
ProcessorMap = dict[str, Type[BaseFileProcessor]]
|
||||
processors: ProcessorMap = {
|
||||
'yaml': YamlProcessor,
|
||||
'yml': YamlProcessor,
|
||||
'json': JsonProcessor,
|
||||
|
||||
}
|
||||
|
||||
|
||||
class UnsupportedFileTypeError(Exception):
|
||||
"""当文件类型不被支持时抛出此异常。"""
|
||||
pass
|
||||
|
||||
|
||||
# def get_processor_class(file_suffix: str = "yaml") -> Type[BaseFileProcessor]:
|
||||
def get_processor_class(fp: Union[Path, str]) -> 'BaseFileProcessor':
|
||||
fp = Path(fp)
|
||||
if fp.is_file():
|
||||
file_suffix = fp.suffix[1:]
|
||||
processor_class = processors.get(file_suffix.lower(), YamlProcessor) # 代理模式
|
||||
|
||||
return processor_class(fp) # 默认回退到 Yaml
|
||||
else:
|
||||
raise UnsupportedFileTypeError(fp)
|
||||
|
||||
|
||||
# FileHandle = get_processor("yaml")
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 示例用法
|
||||
yaml_path = r'E:\PyP\InterfaceAutoTest\TestCases\answer\test_1_status.yaml' # 你的 YAML 文件路径
|
||||
# yaml_file = FileHandle(yaml_path)
|
||||
# print(yaml_file.load())
|
||||
# print(type(yaml_file))
|
||||
# file_suffix = Path(yaml_path).suffix[1:]
|
||||
# print(file_suffix)
|
||||
get_processor = get_processor_class(yaml_path)
|
||||
print(get_processor.load())
|
||||
Reference in New Issue
Block a user