Postman学习总结

Lesson1 Postman安装与基本使用

postman工作原理:

Postman下载安装:

发起第一个接口请求:

我们使用的是这个网站给我们提供的一个查询天气的接口。

拿到一个接口以后www.tianqiapi.com,首先要获取一下接口信息,那么就需要去看一下接口文档。

[if !vml]

[endif]

get:http请求方法,后面是跟着的url。

在postman中选择好请求方法,将url粘贴过来。

然后查看参数内容,在参数中,找到必填参数,填写到params中。

填写好之后就可以进行send,返回的信息就是这个接口发送请求给服务器,服务器返回回来的内容。

除了必填的参数,还有一些非必填的参数,也可以有选择性的进行填写。


Lesson2 Get请求实战一接口测试流程

Get与Post区别:

[if !supportLists]1.    [endif]Get比Post更不安全,因为参数直接暴露在url上, 所以不能用来传递敏感信息。

[if !supportLists]2.    [endif]Get参数通过url传递,Post放在Request Body中。

详解:

3. 场景:连接wlan,需要登录之后才能进行上网,但是认证页面打开非常慢,如果打开页面中的广告再打开认证页面就会变得很快。→get比post要快

[if !supportLists]4.    [endif]场景:用货车拉煤,将煤放在货车顶上get;用货车拉煤,将煤放在货车里面post。

          但是若运输的是汽油,就不能放在顶上了,只能使用post。→post更安全,并且携带敏感信息。→但是get同样可以将货物放在里面,post同样可以将货物放在上面。

5. get只有一个数据包,post有两个数据包。get是将header和数据一起发过来,post是先发一次header,再发一次数据。

接口测试一般在功能测试之前,开展集成测试的时候就开始了。

拿到接口文档后,就可以针对文档中要验证的内容进行用例设计,调用接口进行验证就可以了。

实例:百度进行ip地址的搜索,输入一个ip地址,点击查询进行查询。

1.获取接口信息:

检查进行抓包,抓到这个请求的url,填入postman进行接口请求。

2.接口测试用例设计:

一般是针对postman中的参数进行用例编写。

更改某个参数或者去掉某个参数,进行send传值。还可以利用这个查询别人的url中哪些参数是必填的。

3.4.通过postman就可以完成。

设置请求头域,根据接口文档填写

接口响应:检查network中的response,和从postman拿到的内容是一样的

验证body内容,检查cookie是否正确。

请求需要关注的:请求方法,url,头域信息(referer表示url的来源信息),请求参数

响应需要关注的:响应码,响应头,响应正文

Lesson3 Get请求实战二头域操作

url地址,http操作方法,请求头域,请求操作

有些接口进行测试时,必须设置头域。

抓到的接口,XHR:XMLRequest

referer头域一般指明这个请求的来源,是从哪来的,加上referer防止倒链,爬虫。

如果填写好了url发送,返回有错误的话,那么可以检查头域是否缺少了需要填的信息。找到接口文档,查看这个接口必填信息有哪些。也可以通过抓包查看头域,尝试看下哪个参数是必填的。


Lesson4 Post请求实战-文件上传与json请求

一般情况下,很多登录请求都是post请求。

post请求除了要填写url,自动生成参数,还需要填写body。

这时需要特别注意请求参数在body中的格式以及headers中的Content-Type中要填写的东西。

X-www-form-urlencoded:

一个登陆接口:

[if !vml]

[endif]

这个登陆接口在“检查”时不会在response中展示返回信息,只会登陆成功,使用postman可以看到返回信息,message使用Unicode转码查看。

form-data:

一个上传文件的接口:

在body的填写中,选择form-data,需要选择file选项,进行本地图片的上传。

Form-data中,file为二进制binary图片格式,其他还有很多别的信息,因为我们在上传图片时,只选择了图片,所以在body的填写中,添加图片名称即可。

如果在body中选择form-data了,那么在headers中content-type,就会默认选择multipart/form-data。

[if !vml]

[endif]

如果选择raw,一般在text选项中和www、或者form-data是一样的。可以进行content-type的编辑,直接按照请求体的格式进行发送。

例子:

申请用友云新发证券查询接口:https://api.yonyoucloud.com/apilink/tempServicePages/b1277b7e-b1e3-445c-818a-cdcd457f298c_true.html

购买之后,就可以利用这个接口进行测试,用友云新发证券查询接口:

接口文档中有headers的设置,和一些参数的设置。参数不是必填的,就可以先不填就进行一次请求,看一下结果是啥。

请求的结果是成功的。

[if !vml]

[endif]

参数的设置是请求体body的内容,所以body中选择x-www,在header中会自动加上content-type为x-www,然后再加上请求参数中的设置。

我们在body中加上一个size参数,将其设置为5,那么发送接口后,只展示五条。

其实在选择x-www时,再加上body,相当于在url后面直接加上了?size=5,但是现在在url中不展示,我们可以手动加上?size=5,再请求一次,看结果是否一致。

https://api.yonyoucloud.com/apis/pte/New_Issue_Bond_Information/New_Issue_Bond_Information?size=5

通过content-type中进行判断,在request headers中,content-type如果是application/json,那么在post请求的body中选择raw-json,将请求体输入其中,发包就可以了。

Lesson5 环境变量与全局变量

进行参数设置,如何对接口返回信息进行校验。

环境变量(add):

设置一组变量,在某一个环境中进行使用。

全局变量(Global):

设置单个变量,可以跨接口使用。

全局变量(Global):

我们在使用天气的api时,输入城市名进行发包,就可以获取到这个城市的天气情况。

现在我们想将其保存为一个接口,不需要每次修改url,只要输入城市,就可以查询。

在city参数中输入{{,会展示几个设置好的随机数,前面带上G,G代表Global,全局变量。可以根据本身的英文来判断意思,比如,guid,randomID,randomPhoneNumber等等。

我们这里需要自己配置的话,就设置一个自己想要的名字,比如这里设置成,{{cityname}},但是此时这个变量还没有进行设置。

我们在这里设置一个全局变量,命名为cityname,默认值就随便设置一个城市,保存好这个全局变量之后,再到postman中查看这个接口的变量时,就可以看到在cityname上有了一个G的标识,代表现在这个变量已经是个全局变量了,进行一次发包,得到的结果就是默认情况下海口的天气。

环境变量(add):

比如在百度查询ip接口设置环境变量,

[if !vml]

[endif]

命好名字后,就能在环境变量中看到自己命名的一组变量。

点击进入,可以添加其他的变量,同时保存在这一组环境变量中。

设置好了环境变量,必须在右上角选择响应对应环境,在输入{{时才可以展示出自己设置好的这组变量,不然就只展示全局变量。

但是如果在右上角选择了环境变量,在输入栏写入全局变量时,取值仍是环境变量,也就是说环境变量的优先级大于全局变量(overdriven)。

小眼睛快读:

 Lesson6 测试沙箱与测试断言

发送请求之后,对返回信息进行校验的过程,就是断言,验证返回结果是否符合预期。

Postman测试沙箱其实是结合JS脚本以及自己封装的一些功能,完成测试中的功能,在请求发起前后实现部分测试操作。

Pre-request:

在发起请求之前,

var表示variable,表示用一个变量city来接收从环境变量中得到的这个信息

使用postman自带的控制台console,将变量输出到postman中的控制台上,在控制台上就可以看到这一次请求的请求和返回。

在进行接口测试之前,要选择相应的环境。

使用Tests自动进行接口的断言:

Tests是得到了返回信息之后才进行操作的,一般使用的是send a request之后的这些。

比如:

[if !supportLists]1.    [endif]状态码200

可以利用这个模板进行校验,function()就是我们要进行的断言。

[if !supportLists]2.       [endif]使用返回体模板,返回体中包含某个string字段

这里的文本中格式必须是raw的格式,没有经过转译的Unicode,例如\ “”等符号,前面去添加\,防止被当成JS中的特殊字符。

[if !supportLists]3.    [endif]验证某个字段中是否包含某个文本信息,json文本

需要将jsonData换成我们需要校验的变量,eql换成预期的结果,注意这里要加双引号。

举例:

百度ip查询接口:

[if !supportLists]1.    [endif]写tests之前先看一下正确返回的信息,分析一下json的格式

如果要验证status,它是在json第一层级里;

如果验证location,它是在data[]中,并且在[]的第一层级中。

我们校验两个,使用console进行调试:

针对有多层数据的,我们一层一层进行校验,“”+是注释。

如果想其中加上循环,我们也可以书写一个循环加入,但是要调节其中的变量

Lesson7 多接口测试管理-测试集与数据驱动

多接口管理:

点击小三角打开run,或者直接点击runner,就可以运行我们的测试集。

需要注意,如果这个collection的接口是在不同环境中运行的,那么需要将这几个环境中的变量放置在一个环境中,再进行运行。

执行之前需要选择的就是环境(Environment)、次数(Iteration)、每次完成后需要等待多久(Delay)再进行下一次接口请求、是否记录所有请求的日志(Log Responses)。

点击某个接口就可以看到具体日志,请求返回信息等。

我们想利用自己创建的文件去一条一条执行用例,那么

Pm.expect(jsonData.value).to.eql(data.cityname)

这句话的意思是我们期望jsonData.value等于data.cityname。

jsonData是我们返回体json中的数据,用.连接我们想得到的数据,data.cityname是我们数据文件中的数据,用.表示数据文件中具体的某个字段,即用例文件中的变量名称。

postman中,文件导入支持的是json和CSV两种格式,我们将Excel文件转换成CSV文件,再在postman中进行导入。

上传好CSV文件后,先点击preview看下是都是乱码,此时表示文件的编码格式不正确,利用ue将编码格式换成utf-8无bom,就可以看到了。

运行中出错的地方:

[if !supportLists]1.    [endif]一定要保证画框的地方写的变量是正确的,并且和我们数据文件中的变量名称保证为完全一样。

[if !supportLists]2.       [endif]数据文件一定要是CSV文件,并且首先要预览一下不是乱码

[if !supportLists]3.       [endif]必填的参数,如果在用例文件中没有涉及,一定要改成固定的值,不然接口会尝试去调用数据文件中对应变量名称的变量,找不到从而报错。


Lesson8 电商网站cookie操作

通过抓包,抓到登陆查看购物车的接口,我们查看到购物车中有一个“零食大礼包”。

得到一个接口后,首先查看四要素,url地址,请求方式,请求参数,头域。

我们将所有参数填入,此时在头域中不携带cookie,购物车中是没有任何商品的。

[if !vml]

[endif]

[if !vml]

[endif]

这时虽然产生了cookie,但是没有携带信息。

向cookie中添加信息:

[if !supportLists]1.    [endif]直接在抓包过程中,抓到登陆时携带的cookie,填入请求头域中

[if !supportLists]2.    [endif]手动添加

[if !vml]

[endif]

先将请求的域名填入,再增加cookie,增加cookie的时候一般只要拿到sessionID就可以了,这就要比我们直接在抓包过程中抓到的所有cookie填入要便捷。

断言:注意前后置顺序

[if !vml]

[endif]

[if !vml]

[endif]

[if !vml]

[endif]

你可能感兴趣的:(Postman学习总结)