下面是一篇详细介绍postman接口测试的文章,如果文章内容不太明白的话, 我建议看看视频版本,更加清洗,更加直观!

最详细的postman接口测试实战教程_哔哩哔哩_bilibili最详细的postman接口测试实战教程共计129条视频,包括:1、Postman之接口测试灵魂考问、2、Postman之接口返回数据和JSON详解、3、Postman之接口测试协议等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1rh411S7Qp/” />
Params:get请求传参 Authorization:是验证是否拥有从服务器访问所需数据的权限。
Headers:请求头。
Body:(post请求传参)
1.form-data:表单:键值对,还有文件上传。
2.x-www-form-urlenconded 表单:键值对。
3.raw:传各种其他类型的参数,比如:Text,Javascript,json,html,xml
4.binary:用于上传二进制文件。
pre-erquest script:接口请求之前的js脚本。
Tests:接口请求之后的断言(断言接口是否请求成功)
Settings:对请求的设置。
————-
Cookie:是Postman用于自动管理iCookie关联。
响应的功能页签:

Body:响应内容。
Pretty:json格式,raw:文本格式,proview:网页格式。
Cookie:响应的Cookie信息。
Headers:响应头
TestResults:断言结果
响应状态码:200
响应信息:OK
响应时间和响应字节数
——————————————————————————————–
Console:控制台,用于接口测试调试。
面试题:
接口测试中get请求和post请求的区别是什么?
1.get请求一般是获取资源,psot请求一般是提交资源。
2.get是通过在地址栏中以” />{“code”: 0,”msg”: “OK”,”data”: {“id”: 8036687,”account”: “XXXX”,”token”: “eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjgwMzY2ODcsImV4cCI6MTU4NzUyNzg0OX0.L7lDiNs70mAZk6yxhAxDwDC95ISNWb-2MXe4dzWMLmDfOzGrgkPvM12jFoEgMYcc3nnvtfWfOpDxYwngDkMtIw”}

2. 在Tests中添加JavaScript代码,用来获取鉴权

pm.test("V2", function () {//jsonData:响应的所有json信息var jsonData = pm.response.json();var token = jsonData.data.token;//将token值添加到token环境变量中pm.environment.set("token",token)});

2、在需要用到token鉴权的接口中获取登录时添加的环境变量token值

在请求头中添加Authorization属性,属性值为token值

获取环境变量中的token值,用{{}}进行获取

点击send成功运行

六、Postman动态参数

接口测试中,经常用到上下游接口的依赖关系,下游接口的请求依赖上游接口的响应报文作为入参。

这样就是需要我们捕捉上游接口的响应内容,存储起来作为下游接口请求的入参。

这里举两个例子获取动态参数,分别是xml和json格式的请求

xml传参格式

1、上游接口是获取省份信息、下游接口是通过省份获取城市信息

我们需要在接口请求的test页签下,捕捉上游接口的响应内容,并存起来

方法://把xml格式转为json格式---jsonObjectvar jsonObject = xml2Json(responseBody);var js=jsonObject.ArrayOfString.string[27];postman.setGlobalVariable("province", js);

获取到身份信息,并存在全局变量里面

2、下游获取城市接口请求带上变量province 格式为{{province}},请求成功并返回数据

json格式请求

示例:因为充值记录接口中需要用到登录接口返回报文中的信息如下

1.以获取token(JWT)和uid为例

2.在登录接口的tests中写入代码(因为登录接口报文信息中有返回JWT和uid)

方法var jsonData = JSON.parse(responseBody);tests["Your test name"] = jsonData.value === 100;//获取responseBody---作为一个jsonData变量,然后在取到uid 的值postman.setGlobalVariable("uid", jsonData.data.user.id);//获取jwtpostman.setGlobalVariable("jwt", jsonData.data.JWT);

2、把获取的参数存入全局变量;JWT和uid的地方设置变量{{JWT}}和{{uid}}

3、下游接口请求带上该参数

七、断言

1.设置环境变量–Setting an environment variable

postman.setEnvironmentVariable(“key”, “value”);

2.设置全局变量–Set a global variable

postman.setGlobalVariable(“key”, “value”);

3.检查响应中包含string–Check if response body contains a string

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

4.转化XML格式的响应成JSON对象—Convert XML body to a JSON object

var jsonObject = xml2Json(responseBody);

5.检查响应body中等于指定string–Check if response body is equal to a string

tests[“Body is correct”] = responseBody === “response_body_string”;

6.检查JSON某字段值–Check for a JSON value

var data = JSON.parse(responseBody);

tests[“Your test name”] = data.value === 100;

7.检查Content-Type是否包含在header返回(大小写不敏感)–Content-Type is present (Case-insensitive checking)

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

8.检查Content-Type是否包含在header返回(大小写敏感)–Content-Type is present (Case-sensitive)

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

9.检查请求耗时时间小于200ms–Response time is less than 200ms

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

10.检查Status code为200–Status code is 200

tests[“Status code is 200”] = responseCode.code === 200;

11.检查Code name包含指定string–Code name contains a string

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

12.检查成功post的请求status code–Succesful POST request status code

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

13.为JSON data使用微小验证器–Use TinyValidator for JSON data

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);

Sample data files

JSON files are composed of key/value pairs

八、postman用例的批量执行

数据驱动:csv,json
特别注意: 在参数里面取数据文件的值和取全局变量一致,在断言里面取数据文件的值使
用:data[“名称”]
csv文件编码格式必须为:UTF-8

九、、必须带请求头的接口的测试方式

例如:百度的搜索就是一个接口

当你不知道用哪些请求头的时候,可以采取抓包的方式

Host:请求的主机地址

connectionkeep-alive连接方式保持活跃

Accept-Encoding:gzip,deflate,br客户端接收的数据压缩方式

Accept-Language:zh-CN,zh;q=0.9,en;q=0.8客户端接收的数据编码格式

cookie:请求的cookie信息

is_referer:百度一下,你就知道

is_xhr:1

Referer:来源

sec-ch-ua:”NotA;Brand”;v=”99″,”Chromium”;v=”98″,”GoogleChrome”;v=”98″

sec-ch-ua-mobile:” />

Sec-Fetch-Dest:empty

Sec-Fetch-Mode:cors

Sec-Fetch-Site:same-origin

User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/98.0.4758.81Safari/537.36请求的客户端的类型(模拟浏览器的请求)

X-Requested-With:异步请求

Content-Type请求的是数据类型

form-data:Content-Type:multipart/form-data表单文件上传

x-www-from-urlencoded:Content-Typex-www-from-urlencoded表单提交

raw:Content-Typeapplication/json根据你选择的数据类型来决定

binaryContent-Typebinary二进制文件

十、接口MOCK

使用场景:前后端分离,后端的接口数据没有出来,前端需要调用后的接口实现业务,为了
保证我们前端能够正常的开发以及测试,那么就需要使用MOCK,模拟桩。模拟一个接

十一、Postman接口测试之Cookie鉴权。

概念

Cookie和鉴权的区别,cookie一般指缓存在本地的数据;鉴权一般指验证用户是否拥有访问系统的权利

鉴权分类

  1. Basic auth:基础鉴权,数据没有加密可明文显示,一般在测试环境使用,不在线上环境使用
  2. Oauth 2.0:并且包含了第三方登录方式,例如微博、微信、QQ等使用第三方账号进行授权登录)
  3. DigestAuth:对用户名和密码进行加密
  4. token basic authorization:目前在app端常用的是token basic authorization,就是服务端返回token给app端,app端每次请求的时候,带上对应的token去访问,token正确的时候,则服务端允许其正确访问

Postman提供了关于鉴权的demo如下:

Basic-auth/digestauth

直接打开接口地址https://postman-echo.com/basic-auth或https://postman-echo.com/digest-auth,会弹出登录框,如图:不同的是basix-auth的用户名和密码是明文传递的,容易被人劫持;而digestauth的是加密传递

Oauth 2.0

讲basic auth的type改成Oauth 2.0,然后根据引导设置即可

十二、加密解密

前的市面上有哪些加密的方式:

1.对称式的加密方式(私钥加密):不常用DES和AES,已经别淘汰了。

Base64加密:

//base64加密方式:var username = CryptoJS.enc.Utf8.parse("admin");//转为utf‐8var base64_username = CryptoJS.enc.Base64.stringify(username);//转为Base64 加密console.log(base64_username);

Base64解密:

//base64解密方式: var username = CryptoJS.enc.Base64.parse("YWRtaW4=");//解密var new_username = username.toString(CryptoJS.enc.Utf8);//转为utf‐8console.log(new_username)

2.非对称的加密方式(双钥《公钥和私钥》加密):RSA加密方式
由一个密码生成的双钥,公钥加密,私钥解密。私钥加密,公钥解密
3.只加密不解密
1.MD5加密。

//MD5加密var new_username2 = CryptoJS.MD5("admin").toString().toUpperCase();console.log(new_username2)

2.SHA1,SHA3,SHAN……..
混合加密(最定义加密规则):
快分期:贷款业务。加密都是自定义的混合加密。
admin,base64(YWRtaW4=),YWRtaW4=+DFJK/模块名首字母,MD5加密。

今天的文章就到这里哈。

下一篇文章:postman+newman+jenkins实现持续集成,想了解的可以关注一波