feat: 增加伴生包加载器、manifest配置,Excel处理优化
This commit is contained in:
+11
-14
@@ -9,7 +9,7 @@ from typing import Any
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@dataclass
|
||||
class Config:
|
||||
class Config():
|
||||
"""MIL SDK 全局配置
|
||||
|
||||
承载测试工程相关的全局开关与路径信息,是 UI 层与 core 层之间的
|
||||
@@ -23,6 +23,7 @@ class Config:
|
||||
CurrProject: 当前工程名称
|
||||
ItemConfigs: 各模块/用例项的细粒度配置
|
||||
"""
|
||||
path:str
|
||||
DataPath:str = ""
|
||||
FilePath:str = ""
|
||||
AddTimeEn:bool = True
|
||||
@@ -31,6 +32,8 @@ class Config:
|
||||
# dict 是可变类型,必须用 default_factory 显式实例化,避免多个 Config 共享同一对象
|
||||
ItemConfigs: dict = field(default_factory=dict)
|
||||
|
||||
def check_path(self):
|
||||
return os.path.exists(self.path)
|
||||
|
||||
def to_dict(self):
|
||||
"""将 Config 实例序列化为 dict,便于写入 JSON 文件。"""
|
||||
@@ -40,10 +43,10 @@ class Config:
|
||||
"AddTimeEn":self.AddTimeEn,
|
||||
"GeratePath":self.GeratePath,
|
||||
"CurrProject":self.CurrProject,
|
||||
"ItemConfigs":self.ItemConfigs
|
||||
"ItemConfigs":self.ItemConfigs,
|
||||
}
|
||||
|
||||
def load_config(self, config_path: str) -> "Config":
|
||||
def load_config(self) -> "Config":
|
||||
"""从 JSON 文件读取配置并填充到当前实例的各个字段。
|
||||
|
||||
解析规则:
|
||||
@@ -63,11 +66,11 @@ class Config:
|
||||
"""
|
||||
try:
|
||||
# 以 UTF-8 读取 JSON,避免 Windows 默认编码带来的乱码问题
|
||||
with open(config_path, 'r', encoding='utf-8') as f:
|
||||
with open(self.path, 'r', encoding='utf-8') as f:
|
||||
raw = json.load(f)
|
||||
except FileNotFoundError:
|
||||
# 显式记录并重抛,遵循"错误必须显式处理,禁止静默失败"
|
||||
logger.error(f"配置文件{config_path}未找到")
|
||||
logger.error(f"配置文件{self.path}未找到")
|
||||
raise
|
||||
|
||||
if not isinstance(raw, dict):
|
||||
@@ -81,7 +84,7 @@ class Config:
|
||||
setattr(self, key, value)
|
||||
return self
|
||||
|
||||
def save_config(self,config_path:str):
|
||||
def save_config(self):
|
||||
"""将当前配置以 JSON 格式写入磁盘。
|
||||
|
||||
Args:
|
||||
@@ -91,15 +94,10 @@ class Config:
|
||||
Exception: 写入失败时记录日志并原样抛出异常。
|
||||
"""
|
||||
try:
|
||||
with open(config_path,'w',encoding='utf-8') as f:
|
||||
with open(self.path,'w',encoding='utf-8') as f:
|
||||
json.dump(self.to_dict(), f, indent=4, ensure_ascii=False)
|
||||
except Exception as e:
|
||||
logger.error(f"配置文件{config_path}写入失败{e.args}")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
logger.error(f"配置文件{self.path}写入失败{e.args}")
|
||||
|
||||
@dataclass
|
||||
class DataLog:
|
||||
@@ -111,7 +109,6 @@ class DataLog:
|
||||
"""
|
||||
time: float = 0.0
|
||||
value: str = ""
|
||||
|
||||
|
||||
@dataclass
|
||||
class SignalData:
|
||||
|
||||
Reference in New Issue
Block a user