Postman总结

Postman总结

一、用途

开发可以用来测试联调和管理接口,测试可用来接口功能测试

二、简介:

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
它提供功能强大的 Web API & HTTP 请求调试。它能够发送任何类型的HTTP 请求 (GET, HEAD, POST, PUT…),附带任何数量的参数+ headers。

三、Postman功能:

主要用于模拟网络请求包
快速创建请求
回放、管理请求
快速设置网络代理
接口功能测试(可以设置断言,批量测试接口,批量导入和导出,设置全局变量,设置环境变量等等)
压力测试

四、页面访问请求:

form-data、x-www-form-urlencoded、raw、binary的区别

  • form-data:就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。、
  • x-www-form-urlencoded:
    就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对
  • raw
    可以上传任意格式的文本,可以上传text、json、xml、html等
  • binary
    相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。
    multipart/form-data与x-www-form-urlencoded区别
    multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;
    x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

五.常规使用–断言Tests

*	测试返回的body包含的内容

		tests["Body matches string"] =responseBody.has("百度搜索");
*	测试返回的状态码

			tests["Status code is 200"] =responseCode.code === 200;
			tests["1+1"] = 1+1 === 2;
*	测试返回的状态信息

		tests["Status code name hasstring"] = responseCode.name.has("OK");
		tests["hello is he"] ="hello".has("he");
*	测试响应时间是否低于200ms

		tests["Response time is less than200ms"] = responseTime < 200;
*	检查响应body中等于指定string--Check if response body is equal to a string

		tests["Body is correct"] =responseBody === "response_body_string";
*	检查Content-Type是否包含在header返回(大小写不敏感)

		tests["Content-Type is present"]= postman.getResponseHeader("Content-Type");
*	检查Content-Type是否包含在header返回(大小写敏感)

			tests["Content-Type is present"]= responseHeaders.hasOwnProperty("Content-Type");
*	检查成功post的请求

		tests["Successful POST request"]= responseCode.code === 201 || responseCode.code === 202 || responseCode.code=== 200;
*	检查JSON某字段值

		var jsonData = JSON.parse(responseBody);
		tests["Your test name"] =jsonData.expires_in === 7200;

六.接口持久化

把单个接口保存到文件夹(接口项目)中,在接口项目文件夹下新建文件夹(模块)

七.环境变量:

postman可直接通过切换环境来实现多个环境中的参数切换。常用功能:环境地址切换、全局变量使用
Postman总结Postman总结Postman总结Postman总结Postman总结

八.Postman导入导出功能

Postman总结

九.Postman持久化运行

Postman总结

Postman总结

  • 多次迭代进行接口测试,注意与压力测试进行区分。

十.postman提取接口返回值

  • 变量赋值的方式

    let jsondata = JSON.parse(responseBody) ;
    let access_token = jsondata.access_token ;
    let expires_in = jsondata.expires_in ;
    tests["时效"] =expires_in === 7200 ;
    
  • 保存到全局变量

    var jsondata = JSON.parse(responseBody) ;
    postman.setGlobalVariable("tokenid",jsondata.access_token);
    
  • 接口串行传参
    把上一个接口的返回值送给下一个接口作为输入参数
    在postman中通过全局变量实现
    Postman总结
    Postman总结

十一.Postman动态传参

在runner里循环发n次请求/做自动化测试时,有些接口不适合写死参数:

  • Postman有以下内建变量,适合一次性使用:
    {{$guid}}//生成GUID,操作如下图所示
    Postman总结

② {{$timestamp}}//当前时间戳
时间戳是根据1970-01-01开始进行计算的,通过该方法获取到的值,进行转换后,就是当前的时间值
Postman总结

③ {{$randomInt}}//0-1000的随机整数
产生0-1000的随机整数,可用于自动化用户名操作,操作如下图所示:
Postman总结

  • 参数依赖上一个请求的返回:
    上个请求的Tests里提取参数存环境变量,这个请求里用{{变量名}}取值
  • 参数每次都不同,但之后的断言或别的请求里可能还要用:
    在Pre-requestScript里写代码处理,存为环境变量,参数里用{{变量名}}取值

十二.Postman调试功能(日志)

  • 使用 Ctrl+Alt+c 可以打开Postman的控制台,可以查看请求和响应(只适用于客户端,不适用于Chrome 插件)
    Postman总结

  • 用console.log()打印,到控制台看
    console.log(jsondata.access_token);

  • tests[‘这里拼出你想看的字符串’]= true在界面/报告看断言
    tests[jsondata.access_token] = false;

十三.定义公共函数

常用公共函数:

  • 判断是否超时(assertNotTimeout):
    varhasResponse=postman.getResponseHeader(‘Content-Type’)?true:false;if(!hasResponse) tests[‘服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)’]=false;

  • 未超时,显示发出的请求参数(logParams):
    if(hasResponse) tests[[INFO] 请求参数(超时没返回时不解析):${JSON.stringify(request.data)}]=true;

  • 未超时,解析返回的JSON对象(getResponseJson):
    try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){tests[‘服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)’]=false; tests[[INFO] 返回:${responseBody}]=true;console.error(err);}

  • 返回元素的类型(assertType):
    var assertType=(name,value,type)=>{letisType=(type===‘array’)? Array.is Array(value):type of value===type;tests[${name}为${type}(实际值:${value})]=isType;};
    js的数据类型:
    typeof 2 输出 number
    typeof null 输出 object
    typeof {} 输出 object
    typeof [] 输出 object
    typeof (function(){}) 输出 function
    typeof undefined 输出 undefined
    typeof ‘222’ 输出 string
    typeof true 输出 boolean

  • 返回元素是否与预期值一致(assertEqual):
    var assertEqual=(name,actual,expected)=>{tests[${name}等于${expected}(实际值:${actual})]=actual===expected;};

  • 返回元素是否与预期值不一致(assertNotEqual):
    Var assertNotEqual=(name,actual,expected)=>{tests[${name}不等于${expected}(实际值:${actual})]=actual!==expected;};
    各函数的具体用法,如下详解:

  • 第一个函数和第二个函数一起使用,先判断是否超时,若未超时,便显示发出的请求参数,操作如下图所示:

  • Postman总结

    tests中的代码为:
    eval(globals.assertNotTimeout);
    eval(globals.logParams);

  • 返回元素的类型(assertType),操作如下图所示:
    Postman总结

tests中代码为:
eval(globals.assertType);//assertType=(name,value,type);//name为返回的元素key,value为该元素的值,type为该元素的类型assertType(‘姓名’,‘boss’,‘string’);
assertType(‘name’,‘汪兵’,‘string’);
assertType(‘roleType’,0,‘number’);

十四.Postman导出接口测试脚本

打开postman输入我们要测试的登录接口参数之类的
Postman总结
可以看到,接口访问成功,返回的是Json字符串。这个时候我们点击红色框内的Code,弹出如下界面
Postman总结

选择python–>Request后生成代码,我们把该代码复制到python编辑器中。下面是生成的脚本:
Postman总结

1042725715提供的postman分享。
喜欢的可以加selenium+appium自动化群哦:131853242。
文档原稿联系群内【python-太阳酱】1042725715