You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.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文件存储常量更便捷安全:

  1. 创建test_constants.py文件,写入预期数据:
# test_constants.py
EXPECTED_USER_LIST = ["Alice", "Bob", "Charlie"]
EXPECTED_SCORE_TUPLE = (90, 85, 95)
  1. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:21:02