PostMan使用

PostMan的工具使用分享

一、postman简介

1、简介

Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果, 从而验证响应中的结果数据是否和预期值相匹配;并确保开发人员能够及时处理接口中的bug,进而保证产品上线之后的稳定性和安全性。 它主要是用来模拟各种HTTP请求的(如:get/post/delete/put..等等),Postman与浏览器的区别在于有的浏览器不能输出Json格式,而Postman更直观接口返回的结果。

2、下载与使用:

由于2018年初chrome停止对chrome应用程序的支持,目前postman插件还可安装,但已经无法正常使用了。

下载地址: Postman: The World's Leading API Platform | Sign Up for Free

3、界面元素简介:

1)主要界面功能介绍

l New: 新建,可以创建request(请求),collection(请求集),environment(环境变量)等。

l Inport:导入,可以直接导入postman请求集,curl等一些请求文件。

l Runner: 执行请求,可以选择执行请求的collection,并且添加执行参数,例如执行时间,执行次数等等。

l Workspace: 工作台,可以选择使用个人工作台或团队工作台,可以创建team并且邀请成员加入一起编辑使用请求集。

l History: 历史请求,所有调试的历史请求数据

l Collection: 请求集,可以创建保存,将某些请求放到一起形成请求集

l Environment: 环境变量,管理设置的环境变量,可以设置全局环境变量,也可新建环境,添加环境变量

2)工作台页面主要介绍

l 请求方法: 支持get,post,put,patch等请求方法

l URL: 可以直接输入请求URL,也可以通过环境变量设置,自定义URL

l Params: 请求参数

l Authorization: 认证鉴权,支持多种授权鉴权

l Header: 请求头

l Body: 请求体,包含form-data,json,文件上传等

l Pre-request-Script: 请求脚本,可以在请求发起前执行的脚本

l Tests: 接口测试,请求完成后进行的测试脚本

l Cookies: 可以为请求添加cookies

l 下面就是response的一些信息,返回数据,返回头,cookie,测试结果等

4、常规使用步骤:

1)打开postman,新建一个请求

2)在请求方法模块中选择具体的请求方法,比如GET,

3)接口URL中输入地址,点击Send按钮即可发送请求。

二、postman接口测试之断言

1、操作说明

对接口请求后端内容进行设置,如状态码、响应头、响应正文等信息进行断言操作,在设置时会给一个预期结果,在发送请求后会得到一个实际结果,如果两者结果一致,则认为是成功,否则认为是失败,在失败的情况下需要进一步分析原因,从而判断是否是一个bug如果没有断言,我们只能做接口的功能测试,但有了断言后,就为我们做自动化提供了条件。

Postman的Test模块就是实现请求断言功能的,也是基于Node.js的,并且在postman中的断言是非常方便和强大的 ,它为我们内置了一些常用的断言 。用的时候,只需从右侧点击其中一个断言类型,就会在文本框中自动生成对应断言代码块。

2、postman断言的一些特点

  • 断言编写位置:Tests标签
  • 断言所用语言:JavaScript
  • 断言执行顺序:在响应体数据返回后执行 。
  • 断言执行结果查看:Test Results

3、常用的断言类型:

1、状态行中的断言

  • 断言状态码:Status code: code is 200
复制代码
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);        //这里填写的200是预期结果,实际结果是请求返回结果
});
  • 断言状态消息:Status code:code name has string
复制代码
pm.test("Status code name has string", function () {
    pm.response.to.have.status("OK");   //断言响应状态消息包含OK
});

2、响应头中的断言

  • 断言响应头中包含:Response headers:Content-Type header check
复制代码
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type"); //断言响应头存在"Content-Type"
});

3、断言响应体(常用)

  • 断言响应体中包含XXX字符串:Response body:Contains string
复制代码
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
//注解
pm.expect(pm.response.text()).to.include("string")      获取响应文本中包含string
  • 断言响应体等于XXX字符串:Response body : is equal to a string
复制代码
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});
//注解
pm.response.to.have.body("response_body_string");   获取响应体等于response_body_string
  • 断言响应体(json)中某个键名对应的值:Response body : JSON value check
复制代码
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
//注解
var jsonData = pm.response.json()   获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错
pm.expect(jsonData.value).to.eql(100)  获取jsonData中键名为value的值,然后和100进行比较

4、响应时间(一般用于性能测试)

  • 断言响应时间:Response time is less than 200ms
复制代码
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);   //断言响应时间<200ms
});

三、接口批量执行

1、点击postman左侧Collections下面有个添加文件夹图标,就可以创建测试项目

2、该目录下还可以创建子目录,进行测试用例的细分

3、创建测试用例

创建接口测试用例,即新建http请求,选择请求方式、写好url、请求头、请求体

4、设置变量

postman的变量和Jmeter的参数化相似,即把若干处出现多次的数值用一个变量表示,达到一次修改、多处生效的效果,便于修改和管理。

点击postman右上方一个按钮,点击Globals后面的Add按钮,添加全局变量

5、点击右下角Add按钮,添加Environment Name,Key值写变量名称,Value值写变量对应的数值,点击Save按钮进行保存

6、把Value值出现过的地方用{{key}}代替,比如以下面面的截图为例,出现Cookie的位置使用"{{cookie1}}"代替

7、添加响应处理(断言)

在Tests中添加检查条件,postman提供了一些常用的检查条件的代码,直接添加或稍加修改即可。如:响应数据的状态码为200,则判断测试通过,则在代码片中选择"status code:code is 200"

8、点击运行

9、运行后,弹出测试结果,显示测试通过和失败的个数、请求URL、请求头、请求体信息,响应头、响应体信息,状态码等,我们就可以查看测试用例的执行结果及具体信息

四、接口串联

1、先在创建任务接口下,test里选择json check value这个代码片段,将接口返回内容转化为json格式

2、设置全局or局部变量(我这里是设置里全局变量)设置全局or局部变量(我这里是设置里全局变量)

3、在第一个接口请求成功后会自动生成一个环境变量

4、第二个接口我们直接使用 {{变量}}进行传参就行。

原理总结:

1)获取上一个接口的返回值 2)用一个环境变量或全局变量来接受这个返回值 3)用此环境变量或者全局变量作为下一个接口的参数

五、Mock Server

1、Mock Server的意义:模拟那些无法实时连接的后端,或是较难测试的系统接口,用于获得结果反馈的一种测试方式。通过发送请求后,模拟后台返回的响应内容来确认当前系统的正确性。

2、Mock对象适用场景

(1)需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑。

-----比如被测代码中需要依赖第三方接口返回值进行逻辑处理,可能因为网络或者其他环境因素,调用第三方经常会中断或者失败,无法对被测单元进行测试,这个时候就可以使用mock技术来将被测单元和依赖模块独立开来,使得测试可以进行下去。

(2)被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理。

1)前后端项目中,后端接口开发完成之前,接口联调;

2)依赖的上游项目的接口尚未开发完成,需要接口联调测试;

-----比如service层的代码中,包含对Dao层的调用,但是,DAO层代码尚未实现

(3)被测单元依赖的对象较难模拟或者构造比较复杂。

-----比如,某系统的异常条件有很多,但是测试这种异常条件很复杂或者无法模拟。

3、操作步骤:

1)首先,创建一个自定义的URL

2)点击右侧,添加example,保存请求的响应作为一个example

3)此时可以在创建的请求下方看见一个"e.g"的举例, 编辑example,展示请求结果

4)点击mock Server》新建》创建一个mock server 》选择上面已经创建好的 collection

5)在Configuration里面 补充 自定义 mock server名称、环境变量等信息,最后点击创建

6)可以看到mock server里面新增了一个 mock test的项目,复制这个URL

7)然后 用这个API替换自己创建的URL :https://507e0097-5a40-419c-b800-02f5b0b48b78.mock.pstmn.io

8)点击Send

9)使用这个URL去浏览器访问

4、总结:

1)使用mock-server配置私有环境变量并设置相应内容 2)获取mock-sever的接口密钥AIP-key并创建接口名称 3)将mock-server的url(和接口密钥API-key一并)添加在环境变量中 4)在当前集合中创建新请求,在example中设置预期响应结果,使用环境变量中的mock-sever的url,并将环境变量中的mock-server的接口名称和API-key放到请求头(header)里,发送请求,获得预期结果.

六、查看日志

在做接口测试时,经常会因为代码写的有问题导致报错,这时通过查看日志就显得非常重要了,postman也提供了这样的功能,它允许我们在脚本中编写打印语句,查看打印的结果 ; 同时也可以查看每个请求的日志信息 。

在postman中编写日志打印语句使用的是JavaScript,编写的位置可以是Pre-request Script 或Tests标签中。编写打印语句如:console.log("我是一条日志")

打印的日志可以在在postman中:view-show postman console 进行查看

(第二个入口就是左上角第三个图标 )

这里面有几个比较实用的功能:

  • 搜索日志:输入URL或者打印的日志就能直接搜索出我们想要的请求和日志,这对我们在众多日志中查找某一条日志是非常方便的 。
  • 按级别搜索:可以查询log,info,warning,error级别的日志 ,有助于我们更快定位到错误 。
  • 隐藏请求(Hide network):把请求都隐藏掉,只查看输出日志 。

总之,通过这个功能,我们在请求接口报错时,通过打印响应的日志,就能很轻松地找到问题原因了 。

相关推荐
程序员三藏1 天前
快速弄懂POM设计模式
自动化测试·软件测试·python·selenium·测试工具·设计模式·职场和发展
程序员三藏1 天前
使用Docker和Selenium构建自动化测试环境
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
让世界再也没有bug1 天前
JMeter与Postman的区别
测试工具·jmeter·postman
天道有情战天下1 天前
Lua使用
开发语言·lua
优测云服务平台1 天前
质效飞跃,优测金融数智质效解决方案全新升级!
测试工具·金融
minglie12 天前
Wireshark抓HTTPS协议包
网络·测试工具·wireshark
BatyTao2 天前
Postman导入CSV中文乱码解决方法
postman
测试19983 天前
压力测试详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试
独隅3 天前
在 Lua 中,你可以使用 `os.date()` 函数轻松地将时间戳转换为格式化的时间字符串
开发语言·lua