数据驱动测试是什么
数据驱动测试把测试逻辑与数据分离:脚本固定,数据来自表格、CSV 或数据库,新增覆盖往往只需增加数据行而不改代码。它适合同一逻辑需要大量取值组合的场景,配合参数化机制(如 pytest.mark.parametrize)逐行生成用例并独立报告结果。
基本信息
| 数据组织 | 按场景分组数据行,标注预期与依据 |
|---|---|
| 边界数据 | 每组数据覆盖正常、边界与异常三类取值 |
| 常见载体 | CSV/Excel 表格、数据库查询结果、代码内参数化列表 |
| 报告要求 | 每条结果标注对应的数据行,便于追错 |
典型使用场景
- 表单校验矩阵:同一字段的大量合法非法取值
- 接口参数组合:金额、渠道、币种等多参数交叉
- 多地域多语言:同一流程在不同配置下的展示与计算
- 权限矩阵:角色与操作的允许拒绝组合
- 回归补充:上线缺陷修复后追加数据行,防止复发
- 算法与规则表:定价、运费等规则引擎的批量验证
结构示意
结构示意
cases.csv:
case_id,amount,expect_code
C1,100,OK
C2,-1,INVALID
C3,999999,INSUFFICIENT
# 逻辑侧固定:读取数据行 -> 执行 -> 断言 expect_code
# 新增覆盖只加数据行,不改测试代码
# 数据文件纳入版本管理,报告标注用例对应的数据行数据来源怎么选
| 来源 | 适用场景 | 注意点 |
|---|---|---|
| CSV/Excel | 业务可维护的用例矩阵 | 列名与预期列变更要评审 |
| 数据库 | 大体量或从生产脱敏取样 | 数据快照与环境隔离 |
| 代码内参数化 | 开发自测与单元层 | 数据可读性与分组命名 |
数据文件要纳入版本管理;测试报告中标注用例对应的数据行,便于追溯;数据改动后要同步更新预期列。
参数化命名要可读:为每组数据指定明确 ID(如「边界-负数金额」),失败时能一眼定位是哪组数据出错。