精通postman教程(五)postman请求参数化

29 篇文章 0 订阅
10 篇文章 1 订阅

作为一名测试工程师,那么Postman绝对是大伙必备的工具之一。

在这个系列教程中,我将为大伙详细讲解如何使用Postman进行API测试。

今天我带大伙实战一番postman如何请求参数化 ,让你们快速上手这款工具。

请求参数化

数据参数化是Postman最有用的特征之一。你可以将使用到的变量进行参数化,而不是使用不同的数据创建相同的请求。
这些数据可以来自数据文件或环境变量。参数化有助于避免重复相同的测试,可用于自动化迭代测试。
postman参数化的形式主要有三种:

1、内置变量实现

内建变量为postman自带的系统变量

Variable NameDescriptionExamples
{{$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

内建变量一般放在request里

2、使用Pre-request Script实现

  • 首先先获取一个随机数, Math.random()是JavaScript中一个获取随机数的方法

    var test = parseInt(Math.random()*9);
  • 如果我们要调试结果,可以把获取到的随机数在postman的控制台(console)中打印出来,console的入口在postman的页面下方

    console.info("随机生成test为",test)
  • 把生成的数字生成一个全局变量,方便请求参数中引用

    pm.globals.set("test", test);
  • 最后在请求参数中引用变量{{test}}

  • 点击发送接口,发送从成功后,可以通过控制台(console)中查看此次发送接口的请求参数

    常见的方法如下:

    pm.environment.get("variable_key"); // 获取环境变量
    pm.globals.get("variable_key"); // 获取全局变量
    pm.variables.get("variable_key"); // 获取变量,该函数在全局变量和当前环境变量中搜索变量
    pm.collectionVariables.get("variable_key"); // 获取集合变量
    pm.environment.set("variable_key", "variable_value"); // 设置环境变量
    pm.globals.set("variable_key", "variable_value"); // 设置全局变量
    pm.collectionVariables.set("variable_key", "variable_value"); // 设置集合变量
    pm.environment.unset("variable_key"); // 删除环境变量
    pm.globals.unset("variable_key"); // 删除全局变量
    pm.collectionVariables.unset("variable_key"); // 删除集合变量
    pm.sendRequest("https://postman-echo.com/get", function (err, response) {console.log(response.json());});// 发送请求
    
    //1、获取当前时间戳并设置全局变量
    var now_time = Date.now();
    pm.globals.set("now_time", now_time);
    //2、获取guid值并设置全局变变量 
    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);
    //3、获取随机整数并设置全局变量,随机整数值的范围可以设置(9,15)
    const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;//随机数和手机号生成的前提
    pm.globals.set("random_number", randomInt(8,14) );
    //4、从多个选项中选择实现
    const getRandomValue = list => list[randomInt(0, list.length - 1)];
    const charsInName = ['王','李','张'];
    pm.globals.set("people_name", getRandomValue(charsInName) );
    //5、生成随机手机号
    var mobile_num = `13${randomInt(500000000, 599999999)}`;
    pm.globals.set('mobile_num',mobile_num);
    //6、设置等待时间,毫秒级别
    const sleep = (milliseconds) => {
    const start = Date.now();
    while (Date.now() <= start + milliseconds) {}
    };
    sleep(5000);
    
  • 如果觉得使用创建全局变量,再引用的方式太繁琐,也可以在Pre-request Script中直接添加参数,代码如下:

//定义一个随机数(600, 700)之间
var test = parseInt(Math.random()*9);
//打印出生成的随机数,便于调试
console.info("随机生成test为",test)
// 在body中添加参数test,并且值为随机数
pm.request.body.formdata.add({'key':'test','value':test});

3、外部文件的方式实现,通过csv文件或者json格式的文件实现参数化

3.1csv的运用,首先通过在文件中设置参数名及参数值

关键字之间需要用英文逗号分隔开,第一行写定义的参数变量,切记需要以utf-8的编码格式、.csv的文件后缀名保存,点击runner按钮


引用CSV文件参数

设置run参数

查看测试结果

3.2通过json格式的文件实现参数化,导入文件的时候记得校验文件是否为json

注意:
iteration设置迭代次数,每次迭代都会使用数据文件中的一行,如果迭代次数超过数据文件中的行数,将会重复使用最后一行数据。

4、环境变量设置:


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

些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

在我的QQ技术交流群里(技术交流和资源共享,广告勿扰)

1、PostMan接口参数化操作步骤; 2、环境变量设置步骤; 3、A接口返回值例如token赋值给B接口请求参数操作步骤; 图文并茂 1 接口参数化 第一步:点击右上角图标,打开环境配置页面,选择Globals,设置全局变量; 第二步:添加变量名称,设置对应的变量值,保存; 第三步:接口地址或者需要取值的参数value设置;注意需要取值的设置为{{变量名}},双大括号,即可取全局变量设置的值。 TIPS: 如果需要批量修改接口参数等,可导出后编辑,批量替换,再导入即可,注意需要修改接口地址以及下方的参数取值。 2 接口返回值存入环境变量 第一步:查看接口返回值; { "data": { "leaguerId": "161", "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxNjEiLCJjcmVhdGVkIjoxNTI5NTcyNTkzMTI5LCJleHAiOjE1Mjk1Nzk3OTN9.U6qmR-Qa9sJpwxShLOC8WLPBlhLxWWiQTv5bZtyOV0mdyCSHnFBb_p6T5PBY20m_0m2AmrQZGfrv6hvHCPAaow" }, "status": 200 } 第二步:在接口的TESTS页签中输入以下内容(视返回值情况修改): pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // 把responseBody转为json字符串 var Jsondata = JSON.parse(responseBody); // 设置环境变量access-token,供后面的接口引用 pm.environment.set("access-token ", Jsondata.data.token ); 第三步:重新发送上一个接口的参数信息测试,执行后查看环境变量;如图,则表示环境变量的值已经正常存储; 3 参数化取其他接口的返回值 第一步:修改需要引用上述token值的接口参数取值,参数值value设置为{{access-token}}({{变量名}}),测试接口,正确返回即可;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值