参数化
字数
1185 字
阅读时间
5 分钟
参数化,即:postman读取外部数据文件- 适用场景:当http请求,使用的数据有较高相似度时,相同的请求可以考虑使用参数化(将数据组织到数据文件中)
一、数据文件简介
- CSV:

- 优点:数据组织形式简单,适用于大量数据的场合
- 缺点:
- 不支持bool类型的数据。(数据被postman读入后,自动添加""包裹bool值,非数值类型都会如此)
- 不支持多参、少参、无参、错误参数的接口测试
- 不支持复杂数据类型(如:嵌套字典、列表等)
- JSON:

- 优点:
- 可支持bool类型的数据
- 支持多参、少参、无参、错误参数的接口测试
- 支持复杂数据类型
- 缺点:对于相同的数据量,json数据文件大小远大于csv文件
- 优点:
二、导入外部文件
1. CSV文件
- 创建xxx.csv文件
- 将数据写入csv文件中
- 第一行写入的是数据对应的字段名
- 第二行往后依次是对应的数值,数据间用英文逗号隔分

- 需要确保csv文件编码格式为utf8,若不是,则另存为utf8编码方式

- 需要确保csv文件编码格式为utf8,若不是,则另存为utf8编码方式
- 在postman中,选中指定用例集,选择Run,进入Runner界面,选中使用数据文件的数据集,导入数据文件


2. JSON文件
- 创建xxx.json数据文件
- 在数据文件中,按json语法写入json数据。postman要求,json格式的数据文件,数据内容的最外层必须是[ ],内部所有数据用{ }存储
- 在postman中,选中指定用例集,选择Run,进入Runner界面,选中使用数据文件的数据集,导入数据文件

三、读取数据文件的数据
1. 理论概念
- 根据使用数据的位置不同,有两种获取数据文件中数据的方法
- 第一种:请求参数(请求行、请求头、请求体)中,使用数据文件中的数据
- 使用
包裹csv文件字段名 或 json文件中的 key- 如:
或
- 如:
- 使用
- 第二种:代码(断言、请求前置脚本)中,用数据文件中的数据
- 需要借助postman提供的关键字 data,即:
data.字段名或data.key- 如:
data.username或data.password
- 如:
- 需要借助postman提供的关键字 data,即:
- 第一种:请求参数(请求行、请求头、请求体)中,使用数据文件中的数据
2. 案例
注意,参数化用例集操作无法使用Send获取响应数据,因为数据必须从数据文件中获取,因此只能由Runner界面的Run按钮批量执行参数化用例- 需求:批量查询手机号归属地、所属运营商,校验运营商数据正确性
- 接口:http://cx.shouji.360.cn/phonearea.php?number=13012345678
- 测试数据:
手机号:13012345678 运营商:联通 手机号:13800001111 运营商:移动 手机号:18966778899 运营商:电信 - 步骤:
- 初步测试,获知数据之间的关系

- 写好数据文件,按 csv 或 json 对应语法的语法格式组织数据
- 将数据文件上传至用例集的Runner页面中
- 替换上述图示用例中的两处数据:
- 归属地:在代码中,用
data.字段名替换 - 手机号:在查询参数Params中,用
替换
- 其中,字段名指的是用于实现参数化的 数据文件中 的字段名
- 归属地:在代码中,用
- 使用Runner界面中的Run运行参数化用例集

- 结果:

- 调试:通过View-Show Postman Console打开控制台,查看是否正确获取数据

- 初步测试,获知数据之间的关系
- 参数化后,无法再通过Send按钮获取数据

- 借助数据文件,实现"数据驱动"。 --> 有多少条数据,对应就有多少个http请求
四、生成测试报告
- 步骤:
- 批量执行测试用例(借助数据文件)
- 导出 测试用例集(建议与数据文件放在同一文件夹下)
- 执行生成测试报告的命令:
newman run 测试用例集导出文件名.json -d 数据文件名.csv/.json -r html --reporter-html-export 输出报告名.html
生成测试报告后,打开可查看测试结果