Postman-05-编写脚本

简介: Postman-05-编写脚本

1.简介

Postman基于Node.js编写,运行时可让您向请求和集合中添加动态行为。这样,您就可以编写测试套件,构建可以包含动态参数的请求,在请求之间传递数据等等。您可以添加JavaScript代码以在2个事件期间执行:

  1. 一个请求之前被发送到服务器,作为 预请求脚本re-request script  标签。
  2. 收到响应后,作为  test script 选项卡下的 测试脚本

2.脚本运行顺序

2.1单个请求

  • 与请求关联的预请求脚本将在发送请求之前执行
  • 发送请求后,将执行与请求关联的测试脚本

                   

     

2.2集合中

对于集合中的每个请求,脚本将按以下顺序执行:

  • 与集合关联的预请求脚本将在集合中的每个请求之前运行。
  • 与文件夹关联的预请求脚本将在文件夹中的每个请求之前运行。
  • 与集合关联的测试脚本将在集合中的每个请求之后运行。
  • 与文件夹关联的测试脚本将在文件夹中请求后运行。

3.请求前脚本

Pre-request Script : 在将该值传递给第二个请求之前,需要对其进行处理

                               

4.请求后脚本

 

验证请求返回的数据,可以使用pm.response对象。

使用pm.test函数定义测试,并提供一个名称和函数,该函数返回一个布尔值(truefalse)来指示测试是通过还是失败。

1. // 断言响应状态码
2. pm.test("Status test", function () {
3.     pm.response.to.have.status(200);
4. });
1. // 使用适合于响应数据格式的语法来确定请求响应的有效性
2. pm.test("response must be valid and have a body", function () {
3.      pm.response.to.be.ok;
4.      pm.response.to.be.withBody;
5.      pm.response.to.be.json;
6. });
1. // 访问环境
2. pm.test("environment to be production", function () {
3.     pm.expect(pm.environment.get("env")).to.equal("production");
4. });

5.脚本示例

5.1解析响应数据

1. // json格式
2. const responseJson = pm.response.json();
1. // xml格式
2. const responseJson = xml2Json(pm.response.text());
1. const $ = cheerio.load(pm.response.text());
2. //output the html for testing
3. console.log($.html());

5.2 断言类型

1. // 断言类型
2. const jsonData = pm.response.json();
3. pm.test("Test data type of the response", () => {
4.   pm.expect(jsonData).to.be.an("object");
5.   pm.expect(jsonData.name).to.be.a("string");
6.   pm.expect(jsonData.age).to.be.a("number");
7.   pm.expect(jsonData.hobbies).to.be.an("array");
8.   pm.expect(jsonData.website).to.be.undefined;
9.   pm.expect(jsonData.email).to.be.null;
10. });

5.3断言响应时间

1. pm.test("Response time is less than 200ms", () => {
2.   pm.expect(pm.response.responseTime).to.be.below(200);
3. });

5.4断言响应头

1. // 响应头字段
2. pm.test("Content-Type header is present", () => {
3.   pm.response.to.have.header("Content-Type");
4. });
1. // 响应头字段对应的值
2. pm.test("Content-Type header is application/json", () => {
3.   pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/json');
4. });

5.5 断言响应主体

1. pm.test("Person is Jane", () => {
2.   const responseJson = pm.response.json();
3.   pm.expect(responseJson.name).to.eql("Jane");
4.   pm.expect(responseJson.age).to.eql(23);
5. });

5.6断言状态码

1. // 断言状态码是否在数组中
2. pm.test("Successful POST request", () => {
3.   pm.expect(pm.response.code).to.be.oneOf([201,202]);
4. });
1. // 断言状态码值
2. pm.test("Status code is 201", () => {
3.   pm.response.to.have.status(201);
4. });

5.7 断言Cookie

1. // 是否存在
2. pm.test("Cookie JSESSIONID is present", () => {
3.   pm.expect(pm.cookies.has('JSESSIONID')).to.be.true;
4. });
1. // 断言cookie 值
2. pm.test("Cookie isLoggedIn has value 1", () => {
3.   pm.expect(pm.cookies.get('isLoggedIn')).to.eql('1');
4. });

5.8使用多个断言  

1. pm.test("The response has all properties", () => {
2. //parse the response json and test three properties
3.     const responseJson = pm.response.json();
4.     pm.expect(responseJson.type).to.eql('vip');
5.     pm.expect(responseJson.name).to.be.a('string');
6.     pm.expect(responseJson.id).to.have.lengthOf(1);
7. });


相关文章
|
11月前
|
JSON 测试技术 API
『Postman入门万字长文』| 从工具简介、环境部署、脚本应用、Collections使用到接口自动化测试详细过程
『Postman入门万字长文』| 从工具简介、环境部署、脚本应用、Collections使用到接口自动化测试详细过程
155 3
|
3月前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
102 1
|
JavaScript Windows
Postman非GUI运行脚本工具Newman的安装简介
Newman是为Postman而生, 专门用来运行Postman编写好的脚本;使用Newman, 你可以很方便的用命令行来执行postman collections(脚本集合)。
155 0
Postman非GUI运行脚本工具Newman的安装简介
|
JSON 测试技术 文件存储
Postman之Newman命令行运行脚本生成HTML报告
Postman之Newman命令行运行脚本生成HTML报告,运行:newman run ;-e 引用环境变量;-g 引用全局变量;-d 引用数据文件;-n 指定测试用例迭代的次数;-r 表示生成测试报告的文件类型,可以有多个,中间用 逗号 隔开即可;cli,html,json,junit --reporter-html-export 指定生成HTML的报告。
478 0
Postman之Newman命令行运行脚本生成HTML报告
|
JSON JavaScript 测试技术
通过Postman工具如何快速批量生成Python Pytest的测试脚本
github上找到了一个别人开源的脚本,clone下来试了一下,仓库地址如下:该仓库的脚本可以将postman导出的json格式的collections的文件转换为一个指定模板的.py的python脚本。并且提供了cli的命令行去进行转换,也提供了转换的demo,也可以将这个作为一个library安装到自己的python安装目录下的site-packages中去。
通过Postman工具如何快速批量生成Python Pytest的测试脚本
|
JSON jenkins 测试技术
Postman教程-Pre-request Script和Tests脚本进阶
介绍一下在postman中,一些脚本的常见用法:responseBody pm.response pm对象 pm.sendRequest对象
Postman教程-Pre-request Script和Tests脚本进阶
|
JavaScript 测试技术 API
Postman教程-Pre-request Script和Tests脚本的介绍
Pre-request Script脚本的使用场景:一般用来在发送请求之前对数据进行一些预处理,比如获取当前时间戳、随机数之类的用于接口传参。
Postman教程-Pre-request Script和Tests脚本的介绍
Postman教程-如何改变脚本执行顺序
关于Postman.setNextRequest()的一些要点如下。① 指定后续请求的名称或ID,而集合运行器将负责其余部分。② 可以在预请求或测试脚本中使用。一旦设置了多个值,则最后一个生效。③ 如果在请求中没有postman.setNextRequest(),则集合runner默认为线性执行,并移动到下一个请求。因此,要么在集合列表就直接按顺序把请求信息排列好,要么就在请求中写脚本去控制顺序。
|
2月前
|
JSON Java 数据格式
使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“
本文介绍了使用Postman调试接口时遇到的“Content type ‘multipart/form-data;charset=UTF-8’ not supported”错误,原因是Spring Boot接口默认只接受通过`@RequestBody`注解的请求体,而不支持`multipart/form-data`格式的表单提交。解决方案是在Postman中将请求体格式改为`raw`并选择`JSON`格式提交数据。
使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“