如何在.txt文件存储元组、列表等结构并在Python中读取?含pytest场景
pytest测试外置列表/元组数据的处理方案
问题背景
做pytest开发时,若将预期结果的列表、元组直接写在测试类代码中,会导致代码臃肿。想参考JSON文件外置数据的方式,用TXT文件存储这些数据,但目前没找到相关处理方案。
TXT文件是否适合存储列表/元组?
TXT文件可以用来存储,但并非最优选择——因为它没有标准化的结构,解析时需要额外处理。如果一定要用TXT,推荐用Python原生的字面量语法(比如直接写[1,2,"abc"]或(1,2,"def"))来存储,然后用安全的方式解析。
TXT文件数据读取实现
安全解析方式(推荐)
使用ast.literal_eval,它能安全解析Python的字面量(列表、元组、字典等),避免eval的安全风险:
import ast # 读取TXT文件内容 path = "C:\\expected_data.txt" with open(path, 'r', encoding='utf-8') as f: data_content = f.read().strip() # 解析为对应的列表/元组 expected_result = ast.literal_eval(data_content)
注意:TXT文件里要直接写符合Python语法的列表/元组,比如文件内容就是[1, 2, "test_case"]或(100, 200, "expected")
更优的替代方案
其实没必要用TXT,直接用Python文件存储常量更便捷安全:
- 创建
test_constants.py文件,写入预期数据:
# test_constants.py EXPECTED_USER_LIST = ["Alice", "Bob", "Charlie"] EXPECTED_SCORE_TUPLE = (90, 85, 95)
- 在pytest测试代码中直接导入使用:
from test_constants import EXPECTED_USER_LIST, EXPECTED_SCORE_TUPLE def test_user_list(): actual = get_user_list() assert actual == EXPECTED_USER_LIST
内容的提问来源于stack exchange,提问作者fewistle
相关产品推荐
相关产品推荐

