推荐一款接口测试工具!POSTMAN! 简单来讲,四个词,简单实用大方美观! css
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件html
Postman背景介绍
前端
用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是须要一些方法来跟踪网页请求的,用户可使用一些网络的监视工具好比著名的Firebug等网页调试工具。今天给你们介绍的这款网页调试工具不只能够调试简单的css、html、脚本等简单的网页基本信息,它还能够发送几乎全部类型的HTTP请求!Postman在发送网络HTTP请求方面能够说是Chrome插件类产品中的表明产品之一。chrome
Postman的操做环境json
postman适用于不一样的操做系统,Postman Mac、Windows X3二、Windows X6四、Linux系统,还支持postman 浏览器扩展程序、postman chrome应用程序等。windows
Postman重要提示:
api
因为2018年初chrome中止对chrome应用程序的支持,你的postman插件可能没法正常使用了。目前chrome应用商店能使用的就是chrome扩展程序和主题背景。数组
在这里建议你们直接下载它的应用程序进行使用浏览器
贴上官网下载地址:Postman | Download Postman App安全
记得选择下载的版本
下载完成后双击安装吧,安装过程极其简单,无需任何操做
成功进入postman页面后,接下来咱们正式进行postman的系统教程吧
右上角的设置里能够设置postman的主题
这里,出于我的习惯,我把它设置成了黑色
首先,看一下它的基础功能:
collection在postman里面至关于一个文件夹,能够把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也能够再建文件夹。这里咱们作一个普通接口的简单的示例:
该请求是聚合数据提供的一个查询天气的接口,大概还有几百次的次数能够用:
http://v.juhe.cn/weather/index?format=2&cityname=南京&key=64aa04d276d1ed4fd5a147d97e16b87e
点击send,查询成功
这样就完成了一次简单的天气查询接口的请求
1 Authorization:身份验证,主要用来填写用户名密码,以及一些验签字段,postman有一个helpers能够帮助咱们简化一些重复和复杂的任务。当前的一套helpers能够帮助你解决一些authentication protocols的问题。;
2 Headers:请求的头部信息
3 Body:post请求时必需要带的参数,里面放一些key-value键值对
4 Pre-requerst Script:可让你在 请求以前自定义请求数据,这个运行在请求以前,语法使用JavaScript语句。
5 tests:tests标签功能比较强大,一般用来写测试,它是运行在请求以后。支持JavaScript语法。postman每次执行request的时候,会执行tests。测试结果会在tests的tab上面显示一个经过的数量以及对错状况。这个后面会进行详解,它也能够用来设计用例,好比要测试返回结果是否含有某一字符串
6 form-data:,它将表单数据处理为一条消息,以标签为单元,用分隔符分开。既能够单独上传键值对,也能够直接上传文件(当上传字段是文件时,会有Content-Type来讲明文件类型,但该文件不会做为历史保存,只能在每次须要发送请求的时候,从新添加文件。);post请求里较经常使用的一种
7 x-www-form-urlencoded:对应信息头-application/x-www-from-urlencoded,会将表单内的数据转换为键值对;
8 raw:能够上传任意类型的文本,好比text、json、xml等,全部填写的text都会随着请求发送;
9 binary:对应信息头-Content-Type:application/octet-stream,只能上传二进制文件,且没有键值对,一次只能上传一个文件, 也不能保存历史,每次选择文件,提交;
postman支持很是方便的导入和导出接口集,继续操做以下:
导出
导入:
ok,这样就是简单的导入导出collection集合
1. Global---全局
2. Enviroment --- 环境变量
3. Local --- 局部
4. Data ---- 数据
优先级从高到底 Data ---- > Local ---- > Enviroment ---- > Global
postman支持很方便的设置环境变量以及全局变量,并能够一键切换不一样环境
1:能够一键切换环境,选择No Environment则不使用环境变量,仅适用全局变量
2:能够查看当前环境中的变量和全局变量(Globals)的值
3.进入设置页面
如新建一套环境dome
选择咱们刚才建立的环境,点击眼睛能够看到咱们设置的变量值
建立环境变量可以很方便的调取咱们所需的数据
在某些时候,咱们须要获取到一个变量,并保存下来,由于在后面咱们会使用到。好比token,sign等信息
这时候就须要用到tests区域了,使用其强大的js语法
下面是一个简单的将返回值的某个数据设置为环境变量或者全局变量的介绍:
定义一个xxx,获取body中返回的全部参数,并转化为JSON格式 var xxx = JSON.parse(responseBody);
//把json字符串转化为对象。parse()会进行json格式的检查是一个安全的函数, 如:检查json中某个数组元素的个数(这里检测programs的长度)
var data = JSON.parse(responseBody);tests["program's lenght"] = data.programs.length === 5;
将返回中的值设置为一个环境变量 pm.environment.set("key",xxx.data.value);或者postman.setEnvironmentVariable("key", "value");
将返回中的值设置为一个全局变量, pm.globals.set("key",xxx.data.value);或者postman.setGlobalVariable("key", "value");
//注意:Global后面不能加S,value值必定要指定到某个具体节点
实际操做一下:
一个微信登陆的接口token值获取
这是一个微信登陆的接口,属于post方法,里面的必须参数是unionid,这里我已经把unionid填在body里了,点击send下面能够获得一个token
该登陆token每次请求的值都是不同的,属于一个动态值。然后面咱们的全部接口请求都须要这个token,如今就可使用tests将它放置在环境变量里
var acquiretoken = JSON.parse(responseBody);
//定义一个acquiretoken方法(获取token),把responseBody转为json字符串
pm.environment.set("token",acquiretoken.data.token);
//将token变量放置到当前环境变量里去
再次执行send后,点击右上角小眼睛
发现变量就储存在了dome的环境变量里,每次点击send进行请求,发现环境变量里token都会随着结果变化而变化。
同理,全局变量统一能够这样设置
在设置过变量后,调用变量的时候,在postman里也比较方便,直接使用{{变量名}}就能够了,
加入咱们在body里须要一个token值,那么咱们能够直接在引用在环境变量里储存的token,例如:
上面的效果和下面这种把一点点输入的的效果是同样的!
在postman里,内置了一些经常使用的方法:
能够很方便的调用
下面我也整理了一些经常使用的tests方法,分享给你们
测试response Headers中的某个元素是否存在 tests["元素Content-Type是否存在"] = postman.getResponseHeader("Content-Type");
//getResponseHeader()方法会返回header的值;
定义一个xxx,获取headers值 var.xxx = postman.getResponseHeader("key");
将Headers中的值设置为一个环境变量 postman.setEnvironmentVariable("key",xxx);或者pm.environment.set("key",xxx);
检查response的code值是否为200 tests["Status code is 200"] = responseCode.code === 200;
// tests["Status code is 200"]中的tests是一个内置对象,
tests["Status code is 200"]是指为这个断言起个名称叫”Status code is 200”,这个名称能够自行修改。
responseCode.code === 200中的responseCode是内置对象,responseCode对象中有个属性是code,是指HTTP状态码的code,判断code是否为200.
综合起来,这句代码的意思是:名称为”Status code is 200”的断言中,判断responseCode对象的code属性值(HTTP状态码)是否为200。
检查response的body中是否包含字符串 tests["Body matches string"] = responseBody.has("type");
// tests["Body matches string"]中的tests是一个内置对象,
tests["Body matches string"]是指为这个断言起个名称叫”Body matches string”,这个名称能够自行修改。
这句代码的意思是:名称为”Body matches string”的断言中判断响应正文中是否包含:type这个字段。type不管是key或者value,只要匹配就能够。多个类型可用“,”分割。
检查Response Body是否等于字符串 tests["测试点"] = responseBody === "Response Body返回的内容";
//这个能够用在接口返回内容为纯字符串时,直接检查整个返回结果的正确性
检查Response time 是否小于200ms tests["Response time 小于200毫秒"] = responseTime < 200;
检查Response time 是否大于200ms tests["Response time 大于200毫秒"] = responseTime > 200;
postman.setNextRequest('Request 4')
// postman.setNextRequest()是一个带有一个参数的函数,它是接下来要运行的请求的名称或ID。每每用来跳转至某个接口,只在运行该集合时有用,单独运行无效
var jsonObject = xml2Json(responseBody);
//转换XML body为JSON对象
设置一个随机数变量 pm.globals.set("type",parseInt(4*Math.random())+1);
//针对不一样类型的课程类型,设置一个1到4的随机整数,字段名是type,parselnt 是强制转换为整数
校验接口返回是否有数据 tests["获取第一个结果"] = xxx.content.jieguo[0];
//个人程序设置的是若是当前没有数据,则只返回content[],因此这句断言能够校验,若是content里还有数据,则视为返回不为空
没错,使用postman也能够进行接口自动化的,是否是很神奇
首先,既然是自动化测试,那么咱们确定须要工具 (Postman) 或者代码能帮咱们直接判断结果是否符合预期。那么在接口测试上,大致就两个思路:
判断请求返回的 code 是否符合预期
判断请求返回的内容中是否包含预期的内容(关键字)
接下来咱们看看如何利用 Postman 来解决上述的问题
--------------------
这是三个模拟天气的接口集合,点击扩展按钮,找到RUN,进入
这里咱们先简单运行一次:
发现,运行成功。里面我每一个接口都写了两个tests进行校验字段,因此上面一共有6条tests测试点被测试到,而且是成功的
每一个接口里的tests数据以下:
固然,若是想要每次运行不同的数据,咱们须要其余的方法,好比,使用pre-requestScprit功能,导入或者生成随机数据进行测试,这个后续我再进行讲解
支持模拟POST、GET、PUT等常见请求,是后台接口开发者或前端、接口测试人员不可多得的工具
极客专属的接口协做管理工具