当前位置:网站首页>postman之参数化详解
postman之参数化详解
2022-07-06 08:57:00 【自动化测试七叔】
前言
小伙伴们,好久不见呀,今天呢笔者想和大家聊聊postman参数化,在接口测试中,部分参数每次发送请求是唯一的数值,这时可以采用把测试数据参数化处理的方式实现,postman参数化的形式主要有三种。
1、内置变量实现
内建变量为postman自带的系统变量,但是不能进行精确化的对比
Variable Name | Description | Examples |
{ {$guid}} | 添加一个V4风格的GUID | “611c2e81-2ccb-42d8-9ddc-2d0bfa65c1b4” |
{ {$timestamp}} | 添加当前的时间戳,精确到秒 | 1562757107 , 1562757108 , 1562757109 |
{ {$randomint}} | 添加0-1000之间的随机整数 | 0-1000之间的随机整数 |
{ {$randomFullName}} | 随机全名(名字 姓氏) | Connie Runolfsdottir , Sylvan Fay , Jonathon Kunze |
{ { $randomBoolean}} | 随机布尔值 (true/false) | true , false , false , true |
更多内置变量参考:https://blog.csdn.net/minzhung/article/details/102531880 内建变量一般放在request里
2、Pre-request-Script页签中使用代码实现
单一请求执行顺序如下图所示:
Pre-request-Script→request→response→Tests
这是比较推荐的一种参数化方法,可以通过自己写脚本的方式,提高了可塑性,
值得注意的是接口测试执行时接口会先执行这里的代码,然后发送请求,最后进行断言,与test一样都支持js语法
Pre-request-Script为执行接口请求之前要做的操作,而tests是执行完请求要做的操作,内建变量一般放在request里,我们
也可以用代码在pre-request-Script中实现,用代码实现的好处是可以复用,以下为部分举例:
示例一、Pre-request-Script先定义当前时间并获取,把当前时间设置为全局变量后传入请求参数中,然后在Tests中进行断言
3、下面是其他部分参数化方式的实现
代码如下
var now_time = Date.now();
pm.globals.set("now_time", now_time);
const guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
.replace(/x/g, () => (Math.floor(Math.random() * 16)).toString(16))
.replace(/y/g, () => (Math.floor(Math.random() * 4 + 8)).toString(16));
pm.globals.set("guid_value", guid);
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
pm.globals.set("random_number", randomInt(8,14) );
const getRandomValue = list => list[randomInt(0, list.length - 1)];
const charsInName = ['王','李','张'];
pm.globals.set("people_name", getRandomValue(charsInName) );
var mobile_num = `13${randomInt(500000000, 599999999)}`;
pm.globals.set('mobile_num',mobile_num);
const sleep = (milliseconds) => {
const start = Date.now();
while (Date.now() <= start + milliseconds) {}
};
sleep(5000);
4、外部文件的方式实现
4.1通过csv文件或者json格式的文件实现参数化
csv的运用,首先通过在文件中设置需要搜索的字段和搜索出来的结果
关键自之间需要用英文逗号分隔开,第一行写定义的参数变量,切记需要以utf-8的编码格式、.csv的文件后缀名保存,点击runner按钮
也可以在控制台查看具体运行结果
断言的期望结果如果也写入文件中的话,也可以在Tests断言中调用,这里不再举例
4.2外部文件也可以通过json格式的文件实现参数化,导入文件的时候记得校验文件是否为json
值得注意的是iteration设置迭代次数,每次迭代都会使用你的数据文件中的一行,如果迭代次数超过数据文件中的行数,讲会重复使用最后一行数据
总结
今天的文章就分享到这里了,喜欢的小伙伴记得点赞收藏评论加关注哟,关注我每天给你不同的惊喜。
边栏推荐
- How to effectively conduct automated testing?
- Alibaba cloud server mining virus solution (practiced)
- [OC-Foundation框架]-<字符串And日期与时间>
- 超高效!Swagger-Yapi的秘密
- Current situation and trend of character animation
- UML diagram memory skills
- LeetCode:673. Number of longest increasing subsequences
- 什么是MySQL?MySql的学习之路是怎样的
- Hutool gracefully parses URL links and obtains parameters
- Leetcode: Jianzhi offer 03 Duplicate numbers in array
猜你喜欢
Simple use of promise in uniapp
广州推进儿童友好城市建设,将探索学校周边200米设安全区域
LeetCode:124. Maximum path sum in binary tree
Advanced Computer Network Review(4)——Congestion Control of MPTCP
注意力机制的一种卷积替代方式
KDD 2022 paper collection (under continuous update)
vb.net 随窗口改变,缩放控件大小以及保持相对位置
Cesium draw points, lines, and faces
【嵌入式】使用JLINK RTT打印log
Deep anatomy of C language -- C language keywords
随机推荐
Revit 二次开发 HOF 方式调用transaction
[OC]-<UI入门>--常用控件-提示对话框 And 等待提示器(圈)
UnsupportedOperationException异常
Ijcai2022 collection of papers (continuously updated)
【嵌入式】Cortex M4F DSP库
Advanced Computer Network Review(5)——COPE
Export IEEE document format using latex
LeetCode:214. Shortest palindrome string
软件压力测试常见流程有哪些?专业出具软件测试报告公司分享
使用标签模板解决用户恶意输入的问题
ESP8266-RTOS物联网开发
Intel Distiller工具包-量化实现3
I-BERT
什么是MySQL?MySql的学习之路是怎样的
Current situation and trend of character animation
UML图记忆技巧
MySQL uninstallation and installation methods
704 binary search
Deep anatomy of C language -- C language keywords
IJCAI2022论文合集(持续更新中)