https://github.com/postmanlabs/postman-app-support/
Postman介绍
Postman是google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的的Chrome插件。其主要功能包括:
模拟各种HTTP requests
从常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至还可以发送文件、送出额外的 header。
Collection 功能(测试集合)
Collection 是 requests的集合,在做完一個测试的時候, 你可以把這次的 request 存到特定的 Collection 里面,如此一來,下次要做同样的测试时,就不需要重新输入。而且一个collection可以包含多条request,如果我们把一个request当成一个test case,那collection就可以看成是一个test suite。通过collection的归类,我们可以良好的分类测试软件所提供的API.而且 Collection 还可以 Import 或是 Share 出來,让团队里面的所有人共享你建立起來的 Collection。
人性化的Response整理
一般在用其他工具來测试的時候,response的内容通常都是纯文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。这会造成阅读的障碍 ,而 Postman 可以针对response内容的格式自动美化。 JSON、 XML 或是 HTML 都會整理成我们可以阅读的格式
内置测试脚本语言
Postman支持编写测试脚本,可以快速的检查request的结果,并返回测试结果
设定变量与环境
Postman 可以自由 设定变量与Environment,一般我们在编辑request,校验response的时候,总会需要重复输入某些字符,比如url,postman允许我们设定变量来保存这些值。并且把变量保存在不同的环境中。比如,我們可能会有多种环境, development 、 staging 或 local, 而这几种环境中的 request URL 也各不相同,但我们可以在不同的环境中设定同样的变量,只是变量的值不一样,这样我们就不用修改我们的测试脚本,而测试不同的环境。
安装Postman
Postman作为一个chrome的插件,你可以打开chrome,在chrome webstore里面找到。当然,如果是在国内,你需要翻墙,否则的话,你只能百度一下,搜索postman的安装包自己安装到chrome上(这里就不赘述了,有很多类似的文章)。这里需要提一下的是,你可以不用打开chrome而直接使用Postman,具体的方法是:
选项->更多工具->扩展程序
一、这里以Pre-request Script标签来介绍
postman提供了postman提供了一个“Send a request”代码段,他是已经封装好的发送请求的方法 一个“Send a request”代码段,他是已经封装好的发送请求的方法 。
注:这个代码段默认只能发送get请求,且这样直接使用的话无法指定请求头等信息,当然大部分情况下我们不需要单独指定一些请求信息,postman可以自动帮我们完成准备工作。
二、自己编写脚本发送post请求
// 定义请求数据体
var data = {
“userName”:”admin”,
“password”:”vfts123”
}
// 从环境变量中获取token请求服务地址
var ip = pm.environment.get(“ip”);
var port = pm.environment.get(“port”);
const loginRequest = {
url: ‘http://’+ ip+’:’+ port +’/login’,
method: ‘POST’,
header: [‘Content-Type:application/json’, ‘token:123456’],
body: {
mode: ‘raw’,
raw: JSON.stringify(data)
}
};
// 发送请求
pm.sendRequest(loginRequest, function (err, res) {
console.log(res.json());
// 动态设置请求头token
var result = eval(res.json());
var login_token = result.data.token;
console.log(‘token is :’ + login_token );
// pm.globals.set(“login_token”, login_token );
pm.request.headers.add(login_token , ‘token’);
});
var data = {
“key1”:”value1”,
“key2”:”value2”,}
const echoPostRequest = {
url: ‘http://ip:port/XXX’,
method: ‘POST’,
header:’Content-Type:application/json’,
body: {
mode: ‘raw’,
raw: JSON.stringify(data)
}};
pm.sendRequest(echoPostRequest, function (err, res) {
console.log(res.json());
});
postman报错pm is not defined原因分析及处理办法
导入脚本(含有多个接口,且存在接口依赖)到postman中,单独运行第2个接口时报错There was an error in evaluating the Pre-request Script: pm is not defined
说明:第一个接口是登录接口,后续都是登录后的操作
两种错误可能:
第一种情况,postman的版本太低,还不支持pm对象。这种情况,更新postman即可
https://stackoverflow.com/questions/46243745/postman-scripts-pm-is-not-defined
You have to use the standalone version of Postman for the pm to be accessible. I was using it as a Chrome extension. By switching to the standalone version, it worked. I don’t know why, though.
If you are running an old version of Postman, you may run into this issue as I did. From https://www.getpostman.com/docs/v6/postman/scripts/test_examples#older-style-of-writing-postman-tests
The older style of writing Postman tests relies on setting values for the special tests object.
Replace pm with postman, it should work fine.
That causes the error: “postman.sendRequest” is not a function
第二种情况,导入的脚本,没有设置环境,在右上角的设置里,添加一个环境,并添加一个空的变量名token
登录之外的其他接口,还需在Authorization中设置Bearer Token,并输入token变量
https://stackoverflow.com/questions/46243745/postman-scripts-pm-is-not-defined
That causes the error: “postman.sendRequest” is not a function
postman.sendRequest(“https://postman-echo.com/get”, function (err, response) {
console.log(response.json());
});
postman.setGlobalVariable(“variable_key”, “variable_value”);
postman.setEnvironmentVariable(“variable_key”, “variable_value”);
postman.clearGlobalVariable(“variable_key”);
新版本名字换了 是postman 不是pm
Postman脚本中发送请求(pm.sendRequest)
Postman的Collection(集合)/Folder(集合的子文件夹)/Request(请求)都有Pre-request script和Tests两个脚本区域, 分别可以在发送请求前和请求后使用脚本(基于Javascript实现各种操作)
const url = ‘http://115.28.108.130:5000/api/user/getToken/?appid=136425’;
// 发送get请求
pm.sendRequest(url, function (err, res) {
console.log(err ? err : res.text()); // 控制台打印请求文本
});
可以配合pm.environment.set(key:value)来将响应中的数据保存到环境变量中以供本次请求使用
示例: 使用请求前脚本获取token并使用,
输出信息可以通过点击Postman菜单栏 ->view-> Show Postman Console, 打开控制台查看(先打开控制台,再发送请求)
https://www.postman.com/downloads/
Caution: Our Canary builds are designed for early adopters, and may sometimes break.
下载上述版本问题解决
注意需要登录
pm.sendRequest(“https://postman-echo.com/get”, function (err, response) {
console.log(response.json());
});
用户名
xiazm