//获取当前请求方式,返回:string
var method = pm.request.method;
//输出当前请求信息,返回:json
var request = pm.request.toJSON();
//输出当前请求url,返回:string
var url = pm.request.url.toString();
//输出当前请求参数,参数(是否编码):true false ,返回:string
var querypararm = pm.request.url.getQueryString(false);
//获取请求参数,参数(请求的键值)(string 类型),返回:string
var value = pm.request.url.query.get("key_name");
//删除请求参数,参数(请求的键值)
pm.request.url.query.remove("key_name");
//添加请求参数,参数(添加请求参数),数组类型
pm.request.url.query.add("key1=value1","key2=value2");
//判断某个键值是否存在,返回:boolean
var has = pm.request.url.query.has("key");
内置请求
//定义请求信息
var requests = {
url:url,//请求url
method: 'POST',//请求方式
header: {'Content-Type':'application/json'},//请求header
body: {
mode: 'raw',//数据模型
raw: JSON.stringify({mobile:raw.mobile,useScene:"login"})//数据
}
};
//发送请求,参数:请求信息,响应函数(异常,响应数据)
pm.sendRequest(requests,function (err, response) {
var result = response.json();
console.log(result);
});
//创建一个cookie容器
const cookieJar = pm.cookies.jar();
//设置cookie,参数: url,cookieName,cookieValue,回调函数function(异常,设置成功的cookie)
/**
* 如果设置失败,提示如下:Unable to access "xxxx.com" cookie store. Try whitelisting the domain in "Manage Cookies
* 点击界面的 Cookies > Whitelist Domains(左下角) > 在输入框中加入xxxx.com 点击
* add
*/
cookieJar.set("xxxx.com","name","value",function(error,cookie){
console.log(error);
console.log(cookie);
})
//获取cookie,参数: url,cookieName,回调函数function(异常,cookie)
cookieJar.get("xxxx.com","name",function(error,cookie){
console.log(error);
console.log(cookie);
})
//获取所有cookie,参数: url,回调函数function(异常,cookie)
cookieJar.getAll("xxxx.com", function(error, cookies){
console.log(error);
console.log(cookie);
});
//删除cookie,参数: url,cookieName,回调函数function(异常)
cookieJar.unset("xxxx.com", "name", function(error){
console.log(error);
});
//删除所有cookie,参数: url,回调函数function(异常)
cookieJar.clear("xxxx.com", "name", function(error){
console.log(error);
});
值获取
//请求耗时
var time = pm.response.responseTime;
//获取响应code
var code = pm.response.code;
//获取错误描述:例如返回200,下面返回的是OK
var status = pm.response.status;
//获取响应数据
var data = pm.response.json();
//获取响应header
var header = pm.response.headers.get("key");
模板判断
//断言响应中是否包含指定字符串
pm.test("断言响应体包含指定字符串", function () {
pm.expect(pm.response.text()).to.include("指定字符串");
});
//断言响应是否等于指定字符串
pm.test("断言响应是否等于指定字符串", function () {
pm.response.to.have.body("指定字符串");
});
//断言json值是否等于指定值
pm.test("断言json值是否等于指定值", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
//断言是否存在Content-Type标头
pm.test("断言是否存在Content-Type标头", function () {
pm.response.to.have.header("Content-Type");
});
//断言cookie是否存在
pm.test("断言cookie是否存在", () => {
pm.expect(pm.cookies.has('JSESSIONID')).to.be.true;
});
//断言cookie是否等于特定值
pm.test("断言cookie是否等于特定值", () => {
pm.expect(pm.cookies.get('JSESSIONID')).to.eql('1');
});
//断言响应时间小于200ms
pm.test("断言响应时间小于200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
//断言状态码为200
pm.test("断言状态码为200", function () {
pm.response.to.have.status(200);
});
//断言状态响应说明是否包指定值
pm.test("断言状态响应说明是否包指定值", function () {
pm.response.to.have.status("Created");
});
//断言成功响应状态码,oneOf表示在一组值中
pm.test("断言成功响应状态码", function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
//断言环境值和响应回来的值
pm.test("断言环境值和响应回来的值", function () {
pm.expect(pm.response.json().name).to.eql(pm.environment.get("name"));
});
//断言响应数据类型
/* 响应数据结构如下
{
"name": "Jane",
"age": 29,
"hobbies": [
"skating",
"painting"
],
"email": null
}
*/
const jsonData = pm.response.json();
pm.test("Test data type of the response", () => {
pm.expect(jsonData).to.be.an("object");//是否为对象类型
pm.expect(jsonData.name).to.be.a("string");//是否为字符串类型
pm.expect(jsonData.age).to.be.a("number");//是否为数字类型
pm.expect(jsonData.hobbies).to.be.an("array");//是否为数组
pm.expect(jsonData.website).to.be.undefined;//是否未定义
pm.expect(jsonData.email).to.be.null;//是否为null
});
//断言数组
/* 响应数据结构如下
{
"errors": [],
"areas": [ "goods", "services" ],
"settings": [
{
"type": "notification",
"detail": [ "email", "sms" ]
},
{
"type": "visual",
"detail": [ "light", "large" ]
}
]
}
*/
const jsonData = pm.response.json();
pm.test("Test array properties", () => {
//判断是否为空
pm.expect(jsonData.errors).to.be.empty;
//判断是否包含 "goods"
pm.expect(jsonData.areas).to.include("goods");
//判断 settings 中的object是否有type='notification'
const notificationSettings = jsonData.settings.find
(m => m.type === "notification");
pm.expect(notificationSettings)
.to.be.an("object", "Could not find the setting");
//判断是否notificationSettings.detail中是否包含"sms"
pm.expect(notificationSettings.detail).to.include("sms");
//判断是否notificationSettings.detail中是否包含如下所有成员
pm.expect(notificationSettings.detail)
.to.have.members(["email", "sms"]);
});
//断言一个对象包含键或属性
//断言包含所有的key
pm.expect({a: 1, b: 2}).to.have.all.keys('a', 'b');
//断言包含任何一个成员
pm.expect({a: 1, b: 2}).to.have.any.keys('a', 'b');
//断言不包含任何一个成员
pm.expect({a: 1, b: 2}).to.not.have.any.keys('c', 'd');
//断言是否包含a属性
pm.expect({a: 1}).to.have.property('a');
//断言值是否为object对象,并且包含所有的key
pm.expect({a: 1, b: 2}).to.be.an('object')
.that.has.all.keys('a', 'b');
//TV4校验
//定义校验模型,要求值为boolean类型
var schema = {
"items": {
"type": "boolean"
}
};
//定义测试数据
//满足要求
var data1 = [true, false];
//不满足要求
var data2 = [true, 123];
//校验TV4模型
pm.test('校验TV4模型', function() {
pm.expect(tv4.validate(data1, schema)).to.be.true;
pm.expect(tv4.validate(data2, schema)).to.be.true;
});
//JSON模型校验
//构建Ajv
var Ajv = require('ajv');
//初始化
var ajv = new Ajv({logger: console})
//定义规则
var schema = {
"properties": {
"alpha": {
"type": "boolean"
}
}
};
//定义测试数据
//符合规则
var test1 = {alpha: true};
//不符合规则
var test2 = {alpha: 123};
//校验
pm.test('JSON模型校验', function() {
pm.expect(ajv.validate(schema, test1)).to.be.true;
pm.expect(ajv.validate(schema, test2)).to.be.false;
});
//将请求结果可视化
//数据样例
/**
[
{
"name": "Alice",
"email": "alice@example.com"
},
{
"name": "Jack",
"email": "jack@example.com"
},
// ... and so on
]
*/
//数据模板
var template = `
<table bgcolor="#FFFFFF">
<tr>
<th>Name</th>
<th>Email</th>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</table>
`;
//填充数据模板
pm.visualizer.set(template, {
response: pm.response.json()
});
变量名 |
描述 |
例子 |
$guid | 一个uuid-v4风格GUI | | "611c2e81-2ccb-42d8-9ddc-2d0bfa65c1b4" |
$timestamp | 当前UNIX时间戳(以秒为单位) | 1562757107 |
$isoTimestamp | 当前ISO时间戳(UTC为零) | 2020-06-09T21:10:36.177Z |
$randomUUID | 随机的36个字符的UUID | "6929bb52-3ab2-448a-9796-d6480ecad36b" |
$randomAlphaNumeric | 随机字母数字字符 | 6, "y", "z" |
$randomBoolean | 随机布尔值(真/假 | | true, false, false, true |
$randomInt | 1至1000之间的随机整数 | 802, 494, 200 |
$randomColor | 随机颜色 | "red", "fuchsia", "grey" |
$randomHexColor | 随机十六进制值 | "#47594a", "#431e48", "#106f21" |
$randomAbbreviation | 随机缩写 | SQL, PCI, JSON |
$randomIP | 随机的IPv4地址 | 241.102.234.100, 216.7.27.38 |
$randomIPV6 | 随机的IPv6地址 | dbe2:7ae6:119b:c161:1560:6dda:3a9b:90a9 |
$randomMACAddress | 随机MAC地址 | 33:d4:68:5f:b4:c7, 1f:6e:db:3d:ed:fa |
$randomPassword | 随机的15个字符的字母数字密码 | t9iXe7COoDKv8k3, QAzNFQtvR9cg2rq |
$randomLocale | 随机的两个字母的语言代码(ISO 63 | -1) | "ny", "sr", "si" |
$randomUserAgent | 随机用户代理 | Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.9.8; rv:15.6) Gecko/20100101 Firefox/15.6.6 Opera/10.27 (Windows NT 5.3; U; AB Presto/2.9.177 Version/10.00) |
$randomProtocol | 随机互联网协议 | "http", "https" |
$randomSemver | 随机语义版本号 | 7.0.5, 2.5.8, 6.4.9 |
$randomFirstName | 随机名字 | Ethan, Chandler, Megane |
$randomLastName | 随机姓氏 | Schaden, Schneider, Willms |
$randomFullName | 随机的名字和姓氏 | Connie Runolfsdottir, Sylvan Fay, Jonathon Kunze |
$randomNamePrefix | 随机名称前缀 | Dr., Ms., Mr. |
$randomNameSuffix | 随机名称后缀 | I, MD, DDS |
$randomCountryCode | 随机的2个字母的国家/地区代码(IS | 3166-1 alpha-2) | CV, MD, TD |
$randomLatitude | 随机纬度坐标 | 55.2099, 27.3644, -84.7514 |
$randomLongitude | 随机经度坐标 | 40.6609, 171.7139, -159.9757 |
$randomImage | 随机图像 | http://lorempixel.com/640/480/technics |
$randomAvatarImage | 随机头像 | https://s3.amazonaws.com/uifaces/faces/twitter/johnsmithagency/128.jpg |
$randomImageUrl | 随机图片的网址 | http://lorempixel.com/640/480 |
$randomAbstractImage | 随机抽象图片的网址 | http://lorempixel.com/640/480/abstract |
$randomAnimalsImage | 随机动物图片的网址 | http://lorempixel.com/640/480/animals |
$randomBusinessImage | 随机库存企业图片的网址 | http://lorempixel.com/640/480/business |
$randomCatsImage | 随机猫图像的URL | http://lorempixel.com/640/480/cats |
$randomCityImage | 随机城市图片的网址 | http://lorempixel.com/640/480/city |
$randomFoodImage | 随机食物图片的网址 | http://lorempixel.com/640/480/food |
$randomNightlifeImage | 随机夜生活图片的网址 | http://lorempixel.com/640/480/nightlife |
$randomFashionImage | 随机时尚图片的网址 | http://lorempixel.com/640/480/fashion |
$randomPeopleImage | 一个人的随机图像的URL | http://lorempixel.com/640/480/people |
$randomNatureImag | 随机自然图像的URL | http://lorempixel.com/640/480/nature |
$randomSportsImage | 随机运动图像的URL | http://lorempixel.com/640/480/sports |
$randomTechnicsImage | 随机技术图片的网址 | http://lorempixel.com/640/480/technics |
$randomTransportImage | 随机交通图片的网址 | http://lorempixel.com/640/480/transport |
$randomImageDataUri | 随机图像数据URI | data:image/svg+xml;charset=UTF-8,%3Csvg+xmlns%3D%22http%3A%2F%2Fwww...... |
$randomCurrencyCode | 随机的3个字母的货币代码(ISO-4217 | | CDF, ZMK, GNF |
$randomBitcoin | 随机比特币地址 | 3VB8JGT7Y4Z63U68KGGKDXMLLH5 |
$randomCompanyName | 随机公司名称 | Johns - Kassulke, Grady LLC |
$randomBsNoun | | interface | |
$randomDatabaseType | 随机数据库类型 | tinyint, text |
$randomDatabaseColumn | 随机数据库列名称 | updatedAt, token, group |
$randomDatabaseCollation | 随机数据库排序 | cp1250_bin, utf8_general_ci, cp1250_general_ci |
$randomDatabaseEngine | 随机数据库引擎 | MyISAM, InnoDB, Memory |
$randomDateFuture | 未来的随机日期时间 | Tue Mar 17 2020 13:11:50 GMT+0530 (India Standard Time) |
$randomDatePast | 随机过去的日期时间 | Sat Mar 02 2019 09:09:26 GMT+0530 (India Standard Time) |
$randomDateRecent | 最近的随机日期时间 | Tue Jul 09 2019 23:12:37 GMT+0530 (India Standard Time) |
$randomWeekday | 随机工作日 | Thursday, Friday, Monday |
$randomMonth | 随机月份 | February, May, January |
$randomDomainName | 随机域名 | gracie.biz, armando.biz, trevor.info |
$randomDomainSuffix | 随机域后缀 | org, net, com |
$randomDomainWord | 随机的不合格域名 | gwen, jaden, donnell |
$randomEmail | 随机电子邮件地址 | Pablo62@gmail.com, Ruthe42@hotmail.com, Iva.Kovacek61@hotmail.com |
$randomExampleEmail | 来自“示例”域的随机电子邮件地址 | Talon28@example.com, Quinten_Kerluke45@example.net, Casey81@example.net |
$randomUserName | 随机用户名 | Jarrell.Gutkowski, Lottie.Smitham24, Alia99 |
$randomUrl | 随机网址 | https://anais.net, https://tristin.net, http://jakob.name |
$randomFileName | 随机文件名(包括不常见的扩展名) | neural_sri_lanka_rupee_gloves.gdoc |
$randomFileType | 随机文件类型(包括不常见的文件类型) | model, application, video |
$randomFileExt | 随机文件扩展名(包括不常见的扩展名) | war, book, fsc |
$randomCommonFileName | 随机文件名 | well_modulated.mpg4 |
$randomCommonFileType | 随机的常见文件类型 | application, audio |
$randomCommonFileExt | 随机的通用文件扩展名 | m2v, wav, png |
$randomFilePath | 随机文件路径 | /home/programming_chicken.cpio |
$randomDirectoryPath | 随机目录路径 | /usr/bin, /root, /usr/local/bin |
$randomMimeType | 随机MIME类型 | audio/vnd.vmx.cvsd |