当前位置: 代码迷 >> 综合 >> 【postman】postman入门
  详细解决方案

【postman】postman入门

热度:52   发布时间:2023-10-12 07:08:41.0

文章目录

      • 1. postman初步认识
      • 2. 关联
        • 2.1 添加一个环境变量
        • 2.2 变量赋值
        • 2.3 变量的使用
      • 3.Testing 实例
        • 3.1 设置环境变量
        • 3.2 设置全局变量
        • 3.3 获得响应体
        • 3.4 检查response的body中是否包含字符串
        • 3.5 把XML的body转换成JSON对象
        • 3.6 检查response的body是都为一个字符串
        • 3.7 检查JSON的值
        • 3.8 内容类型存在(检查不区分大小写)
        • 3.9 内容类型存在(区分大小写):
        • 3.10 response的响应时间小于200ms
        • 3.11 状态码为200
        • 3.12 Code name contains a string:
        • 3.13 成功的POST request状态码:
        • 3.14 微小验证器
        • 3.15 获取当前时间戳
        • 3.16 获得当前的时间
        • 3.17 MD5加密
      • 4.postman脚本
      • 5.批量执行测试用例
      • 6.批量参数化
        • 6.1 txt文件的参数化
        • 6.2 csv文件的参数化
      • 7.处理大量重复的断言逻辑
      • 8.OAuth 2.0授权
      • 9.postman详解

1. postman初步认识

可以创建集合用来分类管理测试用例:
【postman】postman入门
还可以在下面创建子集合用来进行测试用例的细分:
【postman】postman入门

2. 关联

有一些请求需要之前的响应结果才能够请求成功,那么这个时候就需要对这个参数进行关联操作。
关联的参数分为两种,环境变量和全部变量。
这里我们以环境变量为例:

2.1 添加一个环境变量

【postman】postman入门
【postman】postman入门
【postman】postman入门
点击Add之后进入环境变量的添加页面:
【postman】postman入门
看见如下界面就表示添加完成啦:
【postman】postman入门
添加完成之后,使用时就可以在右侧选择:
【postman】postman入门

2.2 变量赋值

设置好环境变量之后,当然就是赋值啦,这里以登录令牌为例将我们的值保存至user_ticket变量中:
【postman】postman入门
代码如下:

//set user_ticket
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("user_ticket", jsonData.result);

这里面使用的方法都可以在右侧中查找并且直接使用的:
【postman】postman入门

如何查看是否赋值成功?
开始没有赋值时,点击右侧的眼睛按钮可以看到变量后面的value是为空的:
【postman】postman入门
当你点击send发送数据包并且成功获得响应并赋值之后:
【postman】postman入门
就可以在这里看到值啦!

2.3 变量的使用

既然已经赋值完成,那么接下来就是怎么使用这个变量:
很简单,格式如下:

{
   {user_ticket}}

这样就可以直接获取到这个变量的值了,写在请求的参数中就是这个样子:
【postman】postman入门

3.Testing 实例

postman学习中心地址:https://learning.getpostman.com/docs/postman/scripts/test_examples/

3.1 设置环境变量

【postman】postman入门

postman.setEnvironmentVariable("变量名", 变量值);

3.2 设置全局变量

【postman】postman入门

postman.setGlobalVariable("key", "value");

3.3 获得响应体

【postman】postman入门

var jsonData = JSON.parse(responseBody);

3.4 检查response的body中是否包含字符串

tests["Body matches string"] = responseBody.has("string_you_want_to_search");

3.5 把XML的body转换成JSON对象

【postman】postman入门

var jsonObject = xml2Json(responseBody);

3.6 检查response的body是都为一个字符串

【postman】postman入门

tests["Body is correct"] = responseBody === "response_body_string";

3.7 检查JSON的值

【postman】postman入门

var data = JSON.parse(responseBody);
tests["Your test name"] = data.value === 100;

3.8 内容类型存在(检查不区分大小写)

【postman】postman入门

//Note: the getResponseHeader() method returns the header value, if it exists.
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); 

3.9 内容类型存在(区分大小写):

tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");

3.10 response的响应时间小于200ms

【postman】postman入门

tests["Response time is less than 200ms"] = responseTime < 200;

3.11 状态码为200

【postman】postman入门

tests["Status code is 200"] = responseCode.code === 200;

3.12 Code name contains a string:

【postman】postman入门

tests["Status code name has string"] = responseCode.name.has("Created");

3.13 成功的POST request状态码:

【postman】postman入门

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

3.14 微小验证器

【postman】postman入门

var schema = {"items": {"type": "boolean"}
};
var data1 = [true, false];
var data2 = [true, 123];console.log(tv4.error);
tests["Valid Data1"] = tv4.validate(data1, schema);
tests["Valid Data2"] = tv4.validate(data2, schema);
参数:可以修改items里面的键值对来对应验证json的参数

3.15 获取当前时间戳

var time=Math.round(new Date().getTime());
console.log(time);

3.16 获得当前的时间

var date=new Date();
var y = date.getFullYear();  
var m = date.getMonth() + 1;  
m = m < 10 ? ('0' + m) : m;  
var d = date.getDate();  
d = d < 10 ? ('0' + d) : d;  
var h = date.getHours();  
h=h < 10 ? ('0' + h) : h;  
var minute = date.getMinutes();  
minute = minute < 10 ? ('0' + minute) : minute;  
var second=date.getSeconds();  
second=second < 10 ? ('0' + second) : second;  //获取时间,格式为yyyy-mm-dd HH:mm:ss                
var timespan=y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
console.log(timespan);

3.17 MD5加密

var str="kaibin";
var md5Str=CryptoJS.MD5(str).toString();
console.log("加密前的文本:");
console.log(str);
console.log("加密后的文本:");
console.log(md5Str);

4.postman脚本

postman的脚本是大家非常熟悉的javascript脚本,而且postman还内置了一些重用的js库,基本能满足所有的使用场景,我们常用内置的函数包括:

  • Lodash,一个基础的函数库,大家应该都用过
  • cheerio,可以理解为另一个jquery
  • BackboneJS,js的mvc框架
  • CryptoJS,js加密库,支持几乎所有的常用加密方式

使用过程中我们也需要获取请求的值,或者请求的结果,post有几个内置的变量可以直接获取:

  • request 获取请求的参数,包括头和请求体
  • responseHeaders 返回值的header
  • responseBody 返回值的body
  • responseCode 返回值的http code

除此之外,还有几个内置的全局动态环境变量:

  • { {$guid}}: 生成一个guid
  • { {$timestamp}}: 获取当前时间戳
  • { {$randomInt}}: 获取一个动态整数
    【postman】postman入门

具体内容,建议详细阅读:https://www.getpostman.com/docs/postman/scripts/postman_sandbox ,这个页面的内容非常重要。

5.批量执行测试用例

【postman】postman入门
【postman】postman入门
点击了运行之后会自动跳转到如下界面:
【postman】postman入门

6.批量参数化

6.1 txt文件的参数化

先从简单的txt文件开始理解,我们新建一个txt文件,中间存放一些字段:
【postman】postman入门
然后我们在postman中使用这个文件中的参数进行参数化:
【postman】postman入门
代码中data是指传入的文件,name就是字段名,将其中的参数全部赋值给test变量。然后在参数中调用这个变量。
接下来点击文件夹后面的run或者是上方的runner进入运行设置页面:
【postman】postman入门
接下来运行,在url或者是你设置了变量的地方观察一下变量的值是否随参数列表改变就可以啦。

6.2 csv文件的参数化

事实上,我们在生活中更多接触的是csv格式的参数文件,其实与txt文件参数化大致相同,不同的地方在于js代码。
下图是我的表格:
【postman】postman入门
在postman中我要获得name和password的值,代码如下:

var name=data['name'];
var password=data['password'];

【postman】postman入门
这样就可以运行成功啦,虽然我这里在预览的时候最后一行数据总是有个\r,但是对测试结果并没有影响。
【postman】postman入门

7.处理大量重复的断言逻辑

如果是针对一个项目的所有API去编写,类似于判断statusCode这样的断言就会显得很冗余,所以PostMan也考虑到了这点。
在我们创建的Collection以及下层的文件夹中,我们可以直接编写针对这个目录下的所有请求的断言脚本。
【postman】postman入门
【postman】postman入门
这里的脚本会作用于目录下所有的请求。
这样我们就可以将一些通用性的断言挪到这里了,在每个请求的Tests下编写针对性的断言脚本。

8.OAuth 2.0授权

它允许在不公开密码的情况下批准为其他应用程序联系的应用程序。

  1. 在授权标签中,从类型下拉菜单中选择“OAuth 2.0”。
  2. 从“添加授权数据到”下拉菜单中,选择“请求RUL”或“请求标题”。
  3. 为请求设置授权参数:

点击“Get New Access Token” 按钮,添加新的Access Token
在“Access Token”中,输入令牌或环境定义变量
在“Available Tokens”下拉菜单中,选择一个现有的令牌
【postman】postman入门
点击“Get New Access Token” ,如下图:
【postman】postman入门
每个字段含义:

  • Token Name (令牌的名称)
  • Grant Type (授权类型):Authorization Code(授权码)、implicit(隐式)、Password
    Credentials(密码凭证)、Client Credentals(客户端凭证)
  • Access Token URL :资源服务器的端点,交换访问令牌的授权代码
  • Client ID:在应用程序注册过程中给予客户端的客户端标识符
  • Client Secret:在应用程序注册过程中给予客户端的客户秘钥
  • Scope:访问请求的范围,可能有多个以空格分割的值
  • Client Authorization:Send as Basic Auth header(在标题中发送基本身份验证请求)、Send
    client credentials in body(在请求正文中发送客户端凭据)

在“Available Tokens”下拉菜单中,点击“Manage Tokens”可以查看有关每个令牌的更多详细信息并删除其中的任何一个,如下图:
【postman】postman入门

9.postman详解

大神们的博客,超详细:
https://www.cnblogs.com/xiao-lei/p/7309730.html
后面这个大神的文章最后还有一些实用的使用手册哦,mark一下
https://www.jianshu.com/p/61cfcb436ee4

\

最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。