小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • Python 编程精华文章

    • Python 编程精华文章
    • 1. Python 基础语法面试怎么准备
    • 2. 列表元组字典集合怎么区分
    • 3. Python 字符串常用操作怎么用
    • 4. 函数参数和返回值怎么理解
    • 5. 异常处理在测试脚本中怎么用
    • 6. 文件读写和数据驱动测试
    • 7. Pytest 基础用法怎么讲
    • 8. Pytest fixture 怎么理解
    • 9. Python 接口测试脚本怎么写
    • 10. Python 自动化框架能力怎么提升
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

6. 文件读写和数据驱动测试

文件读写是 Python 自动化测试中的基础能力。很多测试数据不会直接写在代码里,而是放在 JSON、YAML、CSV、Excel 等文件中。自动化脚本读取这些数据后,批量执行用例,这就是数据驱动测试的基本思路。测试工程师如果只会把参数写死在脚本里,后期维护成本会非常高。

面试中问文件读写和数据驱动,不是让你背 open 函数,而是看你是否理解测试数据和测试逻辑分离。好的自动化脚本应该做到:用例逻辑相对稳定,测试数据可以独立维护,新增用例尽量只加数据,不改代码。

一、为什么需要文件读写

测试项目中常见文件包括:

  • JSON 接口测试数据;
  • YAML 配置文件;
  • CSV 批量参数;
  • Excel 用例表;
  • TXT 日志或结果;
  • 测试报告;
  • 上传文件;
  • 下载文件校验。

文件读写能力让自动化脚本可以和外部数据交互。

二、基本文件读取

推荐使用 with open,它会自动关闭文件。

with open("data.txt", "r", encoding="utf-8") as f:
    content = f.read()

常见模式:

  • r:读取;
  • w:写入,覆盖原内容;
  • a:追加;
  • rb:二进制读取;
  • wb:二进制写入。

三、读取 JSON 数据

接口测试中 JSON 很常见。

import json

with open("cases.json", "r", encoding="utf-8") as f:
    cases = json.load(f)

JSON 文件可以保存多条用例:

[
  {"title": "正常登录", "username": "tester", "password": "123456", "expected": 0},
  {"title": "密码错误", "username": "tester", "password": "wrong", "expected": 1001}
]

读取后可以循环执行。

四、读取 CSV 数据

CSV 适合简单表格数据。

import csv

with open("cases.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row["username"])

DictReader 会按表头生成字典,可读性更好。

五、读取 Excel 数据

很多团队用 Excel 管理接口用例。Python 可以用 openpyxl、pandas 等读取。

面试中不一定要写完整代码,但要说清楚思路:读取每一行,转换成用例数据,再参数化执行。

Excel 常见字段:

  • 用例名称;
  • 请求方法;
  • URL;
  • Header;
  • 请求参数;
  • 预期 code;
  • 是否执行。

六、数据驱动测试是什么

数据驱动就是把测试逻辑和测试数据分离。同一段测试代码,读取不同数据执行多条用例。

例如:

for case in cases:
    response = send_request(case["method"], case["url"], case["payload"])
    assert response["code"] == case["expected"]

新增用例时,只需要在数据文件中新增一行或一条 JSON。

七、数据驱动的优点

  • 减少重复代码;
  • 用例维护更方便;
  • 测试数据和脚本分离;
  • 非开发人员也能维护数据;
  • 支持批量执行;
  • 适合接口自动化和参数组合测试。

八、数据驱动常见问题

1. 数据格式不规范

字段缺失、JSON 格式错误、Excel 空单元格都会导致脚本失败。

2. 数据类型问题

Excel 读取数字可能变成浮点,字符串可能带空格。

3. 测试数据互相依赖

前一条用例影响后一条用例,导致结果不稳定。

4. 敏感信息明文保存

密码、Token、数据库账号不应随便写在用例文件里。

5. 路径写死

文件路径写死会导致换机器执行失败。建议使用相对路径或配置管理。

九、测试结果写入文件

可以写入简单结果:

with open("result.txt", "a", encoding="utf-8") as f:
    f.write("登录用例执行成功\n")

实际项目中更常用 Allure、HTML 报告或日志系统,但文件写入是基础。

十、上传和下载文件测试

文件读写还和上传下载测试有关。

上传文件时要以二进制方式读取:

with open("demo.xlsx", "rb") as f:
    files = {"file": f}

下载文件后要验证:

  • 文件是否生成;
  • 文件大小是否正确;
  • 文件名是否正确;
  • 文件内容是否正确;
  • 文件格式是否正确。

十一、面试回答模板

如果面试官问“文件读写和数据驱动测试怎么理解”,可以这样回答:

文件读写在自动化测试中主要用于读取测试数据、配置和写入结果。比如接口自动化中,我会把用例数据放在 JSON、YAML、CSV 或 Excel 中,脚本读取后循环执行,这就是数据驱动。数据驱动的好处是测试逻辑和测试数据分离,新增用例可以只改数据文件,不需要复制代码。读取数据时要注意编码、文件路径、字段缺失、数据类型和敏感信息安全。文件读写也会用于上传下载测试,比如以二进制方式上传文件,并校验下载文件名、大小和内容。

十二、常见追问

追问:为什么不要把测试数据写死?

写死会导致维护困难,新增用例要改代码,不利于批量执行和数据管理。

追问:JSON 和 Excel 哪个好?

JSON 更适合结构化接口数据,Excel 更适合人工维护用例。实际看团队习惯。

追问:文件路径怎么处理?

尽量用相对路径、项目根路径拼接或配置文件,不要写死本机绝对路径。

十三、练习清单

  1. 用 open 读取 txt;
  2. 用 json.load 读取 JSON;
  3. 用 csv.DictReader 读取 CSV;
  4. 设计一份接口用例数据;
  5. 循环执行多条用例;
  6. 把结果追加写入文件;
  7. 处理文件不存在异常;
  8. 做一次文件上传;
  9. 校验下载文件;
  10. 准备数据驱动面试回答。

文件读写和数据驱动,是自动化测试从单条脚本走向框架化的关键。核心思想是让测试逻辑稳定,让测试数据可维护。

配套刷题:

  • Python测试开发面试题
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
5. 异常处理在测试脚本中怎么用
Next
7. Pytest 基础用法怎么讲