Postman之参数化详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

小伙伴们,好久不见呀,今天呢笔者想和大家聊聊postman参数化,在接口测试中,部分参数每次发送请求是唯一的数值,这时可以采用把测试数据参数化处理的方式实现,postman参数化的形式主要有三种。

1、内置变量实现

内建变量为postman自带的系统变量,但是不能进行精确化的对比

更多内置变量参考: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设置迭代次数,每次迭代都会使用你的数据文件中的一行,如果迭代次数超过数据文件中的行数,讲会重复使用最后一行数据

总结

今天的文章就分享到这里了,喜欢的小伙伴记得点赞收藏评论加关注哟,关注我每天给你不同的惊喜。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关推荐
杂学者3 分钟前
python办公自动化---pdf文件的读取、添加水印
python
小学生搞程序14 分钟前
学习Python的优势体现在哪些方面?
开发语言·python·学习
_玖-幽15 分钟前
Python 数据分析01 环境搭建教程
大数据·python·jupyter
databook20 分钟前
『Plotly实战指南』--面积图绘制与应用
python·数据分析·数据可视化
carpell30 分钟前
【双指针法】:这么常用的你怎么能不知道
python·链表·字符串·数组·双指针法
pound12735 分钟前
第五章.python函数
windows·python·microsoft
仙人掌_lz37 分钟前
企业年报问答RAG挑战赛冠军方案:从零到SotA,一战封神
python·gpt·ai·llm·rag·问答·年报
Code_流苏40 分钟前
《Python星球日记》第27天:Seaborn 可视化
python·数据可视化·python入门·seaborn·统计图表
过期动态1 小时前
【动手学深度学习】LeNet:卷积神经网络的开山之作
人工智能·python·深度学习·神经网络·机器学习·分类·cnn
晴天毕设工作室1 小时前
计算机毕业设计指南
java·开发语言·python·计算机网络·课程设计