【postman】postman使用教程
postman基础功能
一、变量设置
编写的API往往需要在多个环境下执行,而Postman 提供了两种类型的变量:环境变量和全局变量,从而很好的解决了这个问题。同时变量还常用于关联接口间的参数传递。
环境变量有效范围仅仅在于当前集合可用,全局变量对所有的集合都可用。
1.环境变量
1)手动创建
api可能需要在不同的环境中运行,所以api请求的服务器地址不能写死,希望是可以配置的,创建环境变量有多种方式
2)代码创建
在pre-request scripts中输入创建环境变量的命令,请求发起前后,在environment management中会新增该变量(也可在Tests中创建环境变量,不过该变量在请求发起后生效)
二、全局变量
与环境变量类似,也可以通过手工和代码创建
三、设置代理
应该时类似与fiddler的抓包吧
1.在postman中设置端口号、保存位置、筛选条件
2.设置本机代理服务器
postman高级应用
一、Scripts
Postman运行过程是基于强大的 Node.js,可以在请求发起前(Pre-request Script)和拿到请求返回后(Tests),通过编写JavaScript来实现请求间数据传递,请求参数动态生成等等。
Pre-request Script 和 Tests 可以在集合(Collections)、夹(Folder)、请求(Request)中设置。
1.脚本执行顺序
集合pre → 夹pre → 请求pre → Request → Response → 集合Tests → 夹Tests → 请求Tests
2.Tests
场景1:API间参数传递
如想要将登录接口响应的sessionid应用与所有请求的请求头中
response header
为了获得sessionid的值,并写入环境变量,我们可以在Tests 中加入如下脚本
//获取响应头中“set-cookie”的value
var jsonData = postman.getResponseHeader("Set-Cookie");
console.log(jsonData);
//以;分隔字符串并取sessionid
cookie=jsonData.split(";")[0];
//设置环境变量
pm.environment.set("cookie", cookie);
场景2:response校验
responseHeaders[String] {Object}:获取response的头部信息使用postman.getResponseHeader(‘xxx’)。
console.log(responseHeaders)
console.log(responseHeaders['Content-Type'])
console.log(postman.getResponseHeader('Content-Type'))
- responseCookies {Array}:返回一个数组,可以通过postman.getResponseCookie(cookieName) 获取具体的cookie信息。
- responseBody {string}:返回响应正文文本的字符串。可以用JSON.parse()转成数组。
- responseTime {number}:返回响应时间,单位ms
- responseCode[String] {Object}:返回的状态码,不带参数会返回4个属性。 常用的属性是 code 就是状态码。
console.log(responseCode)
console.log(responseCode['code'])
- 设置环境变量
pm.environment.set("variable_key", "variable_value");
- 获取环境变量
pm.environment.get("variable_key");
- 清除环境变量
pm.environment.unset("variable_key");
- 设置全局变量
pm.globals.set("variable_key", "variable_value");
- 获取全局变量
pm.globals.get("variable_key");
- 清除全局变量
pm.globals.unset("variable_key");
- 获取一个变量:这个将从环境变量和全局变量中搜索变量,优先从环境变量中搜索
pm.variables.get("variable_key");
- 发起一个请求:
pm.sendRequest("https://postman-echo.com/get", function (err, response) {
console.log(response.json());
});
- 检查response body是否包含某个字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
- 检查response body是否等于某个字符串
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
- 检查JSON值
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
- 校验某结果类型是否存在:如下是说response header包含Content-Type
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
- 响应时间小于200毫秒
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
- 状态代码是200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
- 校验某对象是否包含某个字符串:例如下面校验response的body 包含 msg 属性
pm.test("Body is correct", function () {
pm.response.to.have.body("msg");
});
- 校验结果在某范围中:如下校验请求状态码是201,202
pm.test("Successful POST request", function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
- 将XML主体转换为JSON对象:
var jsonObject = xml2Json(responseBody);
3.pre-request scripts
场景3:自定义变量
场景4:接口依赖
例如我们调用LogOut的 API时,往往需要先执行LogIn的API,这时我们可以再pre-request script中编写个调用LogIn的API,先生成一条数据。
//发送get请求
// pm.sendRequest("https://postman-echo.com/get", function (err, response) {
// console.log(response.json());
// }); //发送post请求
const regRequest={
url: "http://127.0.0.1:8081/api/accounts/login/",
method: "POST",
header:'Content-Type: application/json',//在header中声明使用类型
body: {
mode: 'raw',//使用raw原始模式
raw:JSON.stringify({"username":"admin","password":"admin"})//将json对象转化为文本发送
// mode: 'urlencoded',//使用raw原始模式
// urlencoded:[{key:"username",value:"admin"},{key:"password",value:"admin"}]
}
};
pm.sendRequest(regRequest, function (err, response) {
console.log(response.json());
});
跟Tests脚本类似,除了Response相关的不支持外,基本都支持。
二、Runner
1.批量运行
- 选取一个集合
- 选择环境变量
- 设置每个请求间隔时间(可不设置)
- 点击 Run
运行界面可以查看每个请求的信息(如果Log Response设置为For no requests)则看不到任何的请求返回
2.数据驱动
数据驱动方式除了用于批量测试等价类的测试用例,更常用于通过接口批量造数据
下面我们就以批量测试等价类用例为例子讲解,批量造数据也是类似做法无非过程时常需要调用多个接口罢了。
假设有如下一个登录接口,我需要用不同的账号密码测试登录。
- 那么第一步我们可以本地创建一个Json或者csv文件,设定username和password两个字段,并设置要运行的测试值:
json/csv格式
- 设置请求参数,通过{{变量名}}获取文件中的参数值
- Runer运行,设定Data,选择你的csv或json文件后会自动帮你统计出 Iterrations,并可以通过Preview 预览数据源
- 点击run,可以结果页面看到我们一个api发起了3次请求,并每次请求都从数据源拿去一条对应的数据
【postman】postman使用教程的更多相关文章
- PostMan入门使用教程
最近需要测试产品中的REST API,无意中发现了PostMan这个chrome插件,把玩了一下,发现postman秉承了一贯以来google工具强大,易用的特质.独乐乐不如众乐乐,特此共享出来给大伙 ...
- Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试 Postman 使用方法详解
Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试 问题引入:做接口测试时,有依赖关系的接口往往不好测试( ...
- Postman 官网教程,重点内容,翻译笔记,
json格式的提交数据需要添加:Content-Type :application/x-www-form-urlencoded,否则会导致请求失败 1. 创建 + 测试: 创建和发送任何的HTTP请求 ...
- postman安装使用教程---图文讲解
一.安装postman 1,安装包安装 官网下载地址:https://www.getpostman.com 选择好对应的版本下载,下载完后直接安装 2,插件包安装 可以在谷歌的应用商店里面找到,或者在 ...
- 接口测试工具Postman接口测试图文教程
Postman接口测试工具使用 一.前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进度和后端进度保持基本一 ...
- postman 简单使用教程
Postman 安装 Postman 接口测试(Collection) Postman 接口测试(测试用例)Postman 接口测试(变量与参数化)Postman 接口测试(非 UI 运行模式 ...
- 【Python+postman接口自动化测试】(7)Postman 的使用教程
Postman v6的使用 Postman: 简单方便的接口调试工具,便于分享和协作.具有接口调试,接口集管理,环境配置,参数化,断言,批量执行,录制接口,Mock Server, 接口文档,接口监控 ...
- postman插件安装教程
第一步: 第二步: 第三步: 这样就可以了. 插件下载链接: http://pan.baidu.com/s/1eRVLMpk 密码: 49vb
- Chrome+postman+postman interceptor调试
本文使用chrome+postman4.8.3+postman interceptor0.2.23调试使用cookie的请求. postman4.8.3下载地址:https://pan.baidu.c ...
- [Postman]Postman导航(3)
Postman提供了一个多窗口和多标签界面,供您使用API. 此界面设计为您提供尽可能多的API空间. 侧边栏 邮差侧边栏可让您查找和管理请求和集合.侧边栏有两个主要选项卡: 历史记录 和 ...
随机推荐
- 安卓 android studio 报错 All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com
这个问题是Android studio升级到3.0之后,运行的时候会提示gradle要升级到3.5版本才能编译.于是我把我的gradle升级到了 gradle-4.1-milestone-1 版本,是 ...
- Elasticsearch集成Hadoop最佳实践.pdf(内含目录)
Elasticsearch服务器开发(第2版) 介绍: ElasticSearch是一个开源的分布式搜索引擎,具有高可靠性,支持非常多的企业级搜索用例.ElasticsearchHadoop作为一个完 ...
- 报错:Unable to read additional data from client sessionid 0x36ab52d38c20b20, likely client has closed socket
报错背景: CDH集群中,将kafka和Flume整合,将kafka的数据发送给Flume消费. 启动kafka的时候正常,但是启动Flume的时候出现了报错现象. 但是我检查了Flume,Flume ...
- Java基础教程:Java内存区域
Java基础教程:Java内存区域 运行时数据区域 Java虚拟机在执行Java程序的过程种会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟 ...
- 方法重载overload与方法重写overwrite
方法重载overload: 在同一个类中,出现相同的方法名,与返回值无关,参数列表不同:1参数的个数不同 2参数类型不同 在调用方法时,java虚拟机会通过参数列表来区分不同同名的方法 方法重写ove ...
- Python 访问一个网址之后输入信息进行检索
window Python 3 Pycharm软件 from selenium import webdriver #导入Selenium的webdriver from selenium.webdriv ...
- linux下查看进程的状态 /proc/[pid]/status
查看进程的状态: 1.查看进程的pid,以java为例:ps -ef | grep java 2.查看进程状态:cat /proc/[pid]/status 关键字: linux [root@loca ...
- transform-transition-animation(1)
网布就是我们的屏幕,x轴沿屏幕平行的水平方向,y轴沿屏幕平行的垂直方向,z轴沿与屏幕垂直方向. rotateX(angle), rotateY(angle), rotateZ(angle), rota ...
- 稀疏数组(java实现)
1.稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: 1.1记录数组一共有几行几列,有多少个不同的值 1.2把具有不同值的元素的行列 ...
- visio 绘图素材
1. 前言 visio是个绘图的好工具,可是自带图形元素有限,没有还要自己画. 推荐几个矢量图形素材库,里边有很多图形,很方便的导入到visio中,放大也不失真. 阿里巴巴矢量图库网 stockio ...