您当前的位置:首页 > 计算机 > 软件应用 > 网络应用

第6章Postman工具之脚本应用

时间:01-26来源:作者:点击数:

6.1预请求脚本

1.为集合添加脚本

2.为文件夹添加脚本

3.为请求添加脚本

4.预请求脚本执行的顺序

5.常用的预请求脚本

6.2测试脚本

1.为集合、文件夹、请求添加脚本

2.测试脚本执行的顺序

3.常用的测试脚本

Postman支持JavaScript,它允许用户向请求和集合添加动态行为,通过JavaScript脚本,可以构建包含动态参数的请求,在请求之间传递数据,用户可以在“Pre-request Script”和“Tests”中添加JavaScript代码。前者运行在请求发送到服务器之前,为预请求。后者运行在收到响应之后,为测试脚本。

可以将预请求和测试脚本添加到一个集合、一个文件夹、一个请求中。

6.1预请求脚本

1.为集合添加脚本

如图:

下图为打开界面:

2.为文件夹添加脚本

打开如下图:

3.为请求添加脚本

打开请求直接在参数栏中添加脚本。

4.预请求脚本执行的顺序

集合中的每个请求,按着这样的层次结构运行:集合级脚本>文件夹级脚本>请求级脚本

对于单个请求:预请求脚本在请求发送之前执行。

对于文件夹中的请求:预请求脚本在文件夹中的每个请求之前执行。

对于集合中的请求:预请求脚本在集合中的每个请求之前运行。

下面做个小实验,准备了1个集合,集合里面包含1个文件夹,文件夹里面包含1个请求。如下图:

在集合的Pre-request Scripts 中写入console.log(1)

在文件夹的Pre-request Scripts 中写入console.log(2)

在单个请求的Pre-request Scripts 中写入console.log(3)

打开“Postman Console”控制台,在Collection运行器中执行集合,结果如下图

5.常用的预请求脚本

Postman在右侧区域列出了常用脚本,来了解下。

(1)设置变量、获取变量值的示例脚本

① Set a global variable(设置一个全局变量)

pm.globals.set("variable_key", "variable_value");

② Set an environment variable(设置一个环境变量)

pm.environment.set("variable_key", "variable_value");

(2)清除变量的示例脚本

① Clear a global variable(清除一个全局变量)

pm.globals.unset("variable_key");

② Clear an environment variable(清除一个环境变量)

(3)发送请求的示例脚本

① Send a request(发送一个请求)

pm.globals.unset("variable_key");pm.sendRequest("https://postman-echo.com/get", function (err, response) {

console.log(response.json());

});

6.2测试脚本

1.为集合、文件夹、请求添加脚本

方法与预请求脚本一样。

2.测试脚本执行的顺序

集合中的每个请求,按着这样的层次结构运行:集合级脚本>文件夹级脚本>请求级脚本。

对于单个请求:测试脚本在接收响应之后执行。

对于文件夹中的请求:测试脚本在文件夹中的每个请求运行之后执行。

对于集合中的请求:测试脚本在集合中的每个请求运行之后执行。

同样做个小实验,准备了1个集合,集合里面包含1个文件夹,文件夹里面包含1个请求。如下图:

在集合的Tests 中写入console.log(4)

在文件夹的Tests中写入console.log(5)

在单个请求的Tests 中写入console.log(6)

打开“Postman Console”控制台,在Collection运行器中执行集合,结果如下图

3.常用的测试脚本

(1)操作变量及发送请求脚本

① Set a global variable(设置一个全局变量)

pm.globals.set("variable_key", "variable_value");

② Set an environment variable(设置一个环境变量)

pm.environment.set("variable_key", "variable_value");

③ Get a global variable(获取全局变量)

pm.globals.get("variable_key");

④ Get an environment variable(获取环境变量)

pm.environment.get("variable_key");

⑤ Get a variable(获取变量)

pm.variables.get("variable_key");

⑥ Clear a global variable(清除一个全局变量)

pm.globals.unset("variable_key");

⑦ Clear an environment variable(清除一个环境变量)

pm.environment.unset("variable_key");

⑧ Send a request(发送一个请求)

pm.globals.unset("variable_key");pm.sendRequest("https://postman-echo.com/get", function (err, response) {

console.log(response.json());

});

(2)Response body:Contains string(检查响应体中是否包含一个字符串)

pm.test("Body matches string", function () {

pm.expect(pm.response.text()).to.include("string_you_want_to_search");

});

(2)Response body:Contains string(检查响应体中是否包含一个字符串)

pm.test("Body matches string", function () {

pm.expect(pm.response.text()).to.include("string_you_want_to_search");

});

响应体中包含“成功”字样。

(3)Response body:Convert XML body to a JSON Object(将XML格式的响应体转换成JSON对象)

var jsonObject = xml2Json(responseBody);

(4)Response body:Is equal to string(检查响应体等于一个字符串)

pm.test("Body is correct", function () {

pm.response.to.have.body("response_body_string");

});

上述(2)中的例子在此失败,因为响应体是包含“成功”的一大段文字。

(5)Response body:JSON value check(检查响应体的JSON值)

pm.test("Your test name", function () {

var jsonData = pm.response.json();

pm.expect(jsonData.value).to.eql(100);

});

还是(2)中的例子检查返回体中的“msg”的值是否等于“成功”,这里PASS。

(6)Response headers:Content-Type header check(检查响应体中包含某个header)

pm.test("Content-Type is present", function () {

pm.response.to.have.header("Content-Type");

});

还是(2)中的例子,检查是否包含“Access-Control-Max-Age”头,这里包含,所以PASS。

(7)Response time is less than 200ms(检查响应时间,要求小于200ms)

pm.test("Response time is less than 200ms", function () {

pm.expect(pm.response.responseTime).to.be.below(200);

});

响应时间为85ms,所以PASS。

(8)Status code:Code is 200(要求接口响应code为200)

pm.test("Status code is 200", function () {

pm.response.to.have.status(200);

});

接口响应code=200,PASS。

(9)Status code:Code name has string(要求code名称当中包含某个字符串)

Status中包含“OK”字符串,PASS

(10)Status code:Successful POST request(要求Status code 符合某种条件)

pm.test("Successful POST request", function () {

pm.expect(pm.response.code).to.be.oneOf([201,202]);

});

假设要求响应code是200、201、202中的一个,实际响应code=200,PASS。

(11)Use Tiny Validator for JSON data(使用轻量级验证器)

用来检查响应体数据类型。

var schema = {

"items": {

"type": "boolean"

}

};

var data1 = [true, false];

var data2 = [true, 123];

pm.test('Schema is valid', function() {

pm.expect(tv4.validate(data1, schema)).to.be.true;

pm.expect(tv4.validate(data2, schema)).to.be.true;

});

可以看出数据类型对应上了,PASS。

注意:JavaScript提供了7种数据类型,string、number、boolean、object(对象)、undefined、null、symbol。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门