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]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 792评论 0 0
  • PostMan是一款很流行的API调试工具,在公司开发基本用的都是这款工具,作为测试人员我们经常使用抓包工具Cha...
    小瓶盖10阅读 1,314评论 0 0
  • 每个人对情感多有着相同的渴望,可是追求的方向却有着些许差异。有的朋友希望在情感世界里给予自己关爱在意的人更多陪伴,...
    忆术品阅读 103评论 0 0
  • 瑜伽修行者培养了随遇而安的能力,因此获得了内心的安宁。这种安宁感使他超越了人世间充斥着的各种幻想和不幸。他...
    6b38a4a66238阅读 165评论 0 0
  • 因为晚上要去吃喜酒,今天的菜谱从简。女儿说要吃麦把刀,我说,正好,饭也不用烧了。饭不烧,菜却不能少。难得一个...
    苏州的蔷薇花开阅读 975评论 18 10