Postman的预请求脚本

Posted 白雪冬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postman的预请求脚本相关的知识,希望对你有一定的参考价值。

一、前言

  预请求脚本,顾名思义,是指在请求发送之前执行的脚本。如果想在请求发送时包含当前时间戳或者一个随机的字母、数字、字符串,在这个场景下使用预请求脚本是很好的。例如,要在请求头中包含一个时间戳,可以设置一个环境变量,其值从函数返回,如图所示:

  然后,可以通过输入“timestampHeader”来访问header数据编辑器中的timestampHeader变量。当发送请求时,预请求脚本将被执行,并且timestampHeader的值将被赋予给变量timestampHeader,如图所示,在Headers中通过使用timestampHeader来传递变量。

  Postman提供了预请求脚本的功能,这极大地方便了用户的测试,可能部分用户看到脚本开始担心了,例如,不会使用javascript,不知道pm、Environment等关键字的意思,没关系,Postman准备了常用脚本示例,这些脚本能够满足大多数接口测试的需求,接下来,一起认识一下它们吧!Postman在右侧区域列出了常用脚本示例,如图所示:

一、准备工作

  (1)准备一个接口,如前面用到的豆瓣图书查询接口。
  get请求:https://api.douban.com/v2/book/search?q=笑傲江湖

  (2)打开“Postman Console”窗口
  点击Postman左下角的“console”图标,如图所示,或使用组合键“CMD/Ctrl + Alt + C”,打开“Postman Console”窗口。

  (3)了解函数console.log(“Hello World”),打开“Postman Console”窗口,知道它用于在“Postman Console”窗口输出信息,如图所示:

注意:“Postman Console”窗口输出内容的顺序体现了脚本执行顺序,即Pre-request-Script请求中的脚本先执行,然后才发送接口的请求。

三、设置变量、获取变量值的示例脚本

  (1)Set a global variable(设置一个全局变量)的示例如下:

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

  (2)Set an environment variable(设置一个环境变量)的示例如下:

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

  (3)Get a global variable(获取一个全局变量)的示例如下:

pm.globals.get("variable_key");

  (4)Get an environment variable(获取一个环境变量)的示例如下:

pm.environment.get("variable_key");

  (5)Get a variable(获取一个变量)的示例如下:

pm.variables.get("variable_key");

注意:脚本中的双引号和分号都是英文格式。

  先来看看原始的接口请求:它只是一个普通的GET请求,没有Pre-request-Script脚本,如图所示:

没有“Tests”脚本,如图所示:

没有全局变量,只有有一个普通变量"name=storm",如图所示:

  接下来,通过单击示例脚本,向Pre-request-Script添加脚本示例,此处添加了一个Set a global variable脚本,如图所示:

  修改变量名和值(key1 = value1),然后添加一个environment variable(key2 = value1),最后通过console.log语句输出globals、environment变量及当前环境中的变量name,如图所示:

  接下来,单击“Send”按钮,发送请求,“Postman Console”窗口的输出情况,如图所示:

  可以看到,在发送请求前,先输出了3个值,正好对应Pre-request Script。再来看看Postman的变量,当前环境变量中增加了一个键为key2、值为value2的环境变量;增加了一个键为key1,值为value1的全局变量,如图所示:

四、清除变量的示例脚本

  (1)Clear a global variable(清除一个全局变量)的示例如下:

pm.globals.unset("variable_key");

  (2)Clear an environment variable(清除一个环境变量)的示例如下:

pm.environment.unset("variable_key");

  下面修改Pre-request script,来验证上面两种方法,如图所示:

  发送接口请求,查看“Postman Console”窗口的输出,如图所示:

  再看Postman的当前变量,如图所示:

全局变量key1和环境变量key2,全已经被删除了。

五、发送请求示例脚本

  Send a request(发送一个请求)的示例如下:

pm.sendRequest("https://postman-echo.com/get", function (err, response) 
    console.log(response.json());
);

  修改Pre-request Script,在测试豆瓣搜索图书接口前,先发送一个请求,如图所示:

  查看“Postman Console”窗口的输出,可以看到先通过Pre-request Script脚本发送了一个GET请求,然后才发送被测的接口请求,结果如图所示:

  Postman提供的预请求脚本现已经全本演示完毕,下文讲述测试脚本的知识。

以上是关于Postman的预请求脚本的主要内容,如果未能解决你的问题,请参考以下文章

Postman的预请求脚本

如何使用 Postman 中的预请求脚本从另一个请求运行一个请求

如何在 PostMan 的预请求脚本中计算 md5 哈希?

在 Postman 预请求脚本中生成 RSA JWT

Python 向 Postman 请求代码片段

邮递员 - 在预请求脚本中访问完整的请求正文(以计算哈希)