【python-yaml】解决报错:test_data.py::TestData::test_data: in “parametrize“ the number of names (2):

本文介绍了一次因data.yaml文件中的数据格式错误而导致的测试失败案例。具体表现为在parametrize装饰器中,由于-符号与数字之间缺少空格,导致程序无法正确解析数据。文章提供了修改建议,即在-和数字之间添加空格。

【报错内容】test_data.py: in “parametrize” the number of names (2):

在这里插入图片描述

【报错原因】 data.yaml文件中数据没有填写空格,导致执行失败。

这个- 后面和数字之前应该有空格
在这里插入图片描述

【解决方案】-和数字之间添加空格

在这里插入图片描述
在这里插入图片描述

在使用 `pytest` 框架进行测试时,调用公共方法读取 YAML 文件出现 `ParserError` 错误通常与 YAML 文件格式解析失败有关。此类错误可能由 YAML 文件内容格式不正确、缩进错误、特殊字符未正确转义或文件编码问题引起。以下为详细分析与解决方案。 --- ### YAML 文件格式错误 YAML 文件对格式要求非常严格,尤其是缩进和冒号后的空格。例如,以下格式错误会导致 `ParserError`: ```yaml config: key: value # 错误:冒号后缺少空格 ``` 正确写法应为: ```yaml config: key: value ``` 此类错误在通过 `PyYAML` 或 `ruamel.yaml` 解析时会抛出异常,需确保 YAML 文件结构符合规范 [^3]。 --- ### 使用 `ruamel.yaml` 替代 `PyYAML` `PyYAML` 在解析某些复杂结构或特殊字符时可能存在兼容性问题,推荐使用 `ruamel.yaml` 作为替代方案。它对 YAML 1.2 标准支持更好,且能处理更多格式变体。例如: ```python from ruamel.yaml import YAML yaml = YAML() with open("config.yaml", "r", encoding="utf-8") as f: data = yaml.load(f) ``` 该方法在处理格式不规范或包含特殊字符的 YAML 文件时更具鲁棒性 [^3]。 --- ### 文件编码问题 YAML 文件若使用非 UTF-8 编码(如 GBK、UTF-8 with BOM 等),在读取时可能导致解析失败。确保文件保存为 UTF-8 编码,并在读取时指定编码方式: ```python with open("config.yaml", "r", encoding="utf-8") as f: data = yaml.safe_load(f) ``` 未指定编码可能导致读取时出现乱码或 `ParserError` [^3]。 --- ### YAML 文件内容包含非法字符 YAML 文件中若包含特殊字符(如 tab、不可见字符)或非法结构(如连续多个冒号、列表项未对齐),也可能导致解析失败。使用在线 YAML 校验工具(如 [YAML Lint](http://www.yamllint.com/))可快速检测格式问题 [^3]。 --- ### 异常捕获与调试建议 在调用读取 YAML 的公共方法时,建议添加异常捕获逻辑,便于定位问题: ```python import yaml def load_yaml(file_path): try: with open(file_path, "r", encoding="utf-8") as f: return yaml.safe_load(f) except yaml.YAMLError as e: print(f"YAML 解析错误: {e}") raise except FileNotFoundError: print(f"文件未找到: {file_path}") raise ``` 该方法可在测试执行过程中清晰地反馈错误原因,避免 `ParserError` 被忽略或掩盖 [^3]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值