接口测试 | Postman的安装和测试使用
Postman的安装和使用
- 安装Postman 插件newman
- 第一步:安装Node.js
- 第二步:安装newman
- 第三步:安装newman-reporter-html
- 三者关系
- 1. Node.js:底层运行环境
- 2. Newman:Postman 的命令行核心工具
- 3. newman-reporter-html:Newman 的“报告插件”
- Postman执行测试抓包
- 1. GET测试
- 2. POST请求
- 3. Postman发送登录请求
- Postman高级用法
- 4. 管理Collections
- 创建子模块和请求
- 导出用例集
- 5. Postman实现断言
- 1.断言响应状态码
- 2.断言响应体是否包含某个字符串
- 3.断言响应体是否等于某个字符串(对象)
- 4.断言JSON数据
- 5.断言响应头
- 6. 断言的工作原理
注册免费账户前请注意:建议在网速良好的环境下操作,因涉及境外网站访问。
安装Postman 插件newman
第一步:安装Node.js
第二步:安装newman
安装newmanl时,必须保证node.js已经装成功!!!
在线安装命令:npm install -g newman
在这里插入图片描述
第三步:安装newman-reporter-html
安装命令:npm instal-g newman-reporter-html
同样,尽量保证网络稳定。安装时,尽量不要动终端界面。
三者关系
要理清它们的关系,需从依赖层级、安装前提、功能分工三个角度看:
1. Node.js:底层运行环境
Newman 是基于 Node.js 开发的命令行工具,而 Node.js 是 JavaScript 的运行时环境(提供了 npm
包管理器)。
→ 关系:Node.js 是安装和运行 Newman 的“前提基础”——必须先装 Node.js,才能用 npm
安装 Newman。
2. Newman:Postman 的命令行核心工具
Newman 是 Postman 的“命令行版本”,能在终端中运行 Postman 的集合(Collection),实现接口自动化测试。
→ 关系:Newman 依赖 Node.js 运行,且是 newman-reporter-html
的“宿主工具”(newman-reporter-html
是给 Newman 用的插件)。
3. newman-reporter-html:Newman 的“报告插件”
它是 Newman 的一个扩展插件,作用是将 Newman 运行测试后的结果,生成HTML格式的可视化报告。
→ 关系:newman-reporter-html 依赖 Newman——必须先装 Newman,才能用 npm
安装这个“报告生成插件”,让 Newman 具备生成 HTML 报告的能力。
Node.js
(基础环境) →Newman
(核心工具,依赖 Node.js) →newman-reporter-html
(报告插件,依赖 Newman)。
Postman执行测试抓包
1. GET测试
2. POST请求
实际返回结果“验证码错误”与业务有关
3. Postman发送登录请求
从接口文档,获取登录接口的http请求,使用Postman发送
Postman高级用法
在 Postman 中,Collections(集合)是用于组织、管理 API 请求的 “分组容器”,可理解为 “API 请求的文件夹”,能将多个相关的 HTTP 请求(如项目的登录、数据查询、提交等接口)归类管理,核心作用是提升 API 开发 / 测试的效率
4. 管理Collections
创建子模块和请求
第一步 创建 Collections
第二步 添加请求
导出用例集
- 导入用例集
5. Postman实现断言
- Postman断言借助JavaScript-js语言编写代码,自动判断预期结果与实际结果是否一致。
- 断言代码写在
Tests的标签
中。
1.断言响应状态码
- 在Tests标签中,选中
Status Code:code is200
,生成对应代码 - 适当调整test0方法参数1,和匿名函数中的预期结果。
- 点击send按钮,发送请求,执行断言代码。
- 查看断言结果。
//断言响应状态码是否为200
pm.test("status code is 200",function ()pm.response.to.have.status(200);
});pm:代表postman的一个实例test():是pm实例的一个方法。有两个参数参数1:在断言成功后,给出的文字提示。可以修改。"Status code is200"参数2:匿名函数。
pm.response.to.have.status (200);//意思:postman的响应结果中应该包含状态码200
200-->预期结果!
- 断言正确
- 断言错误
2.断言响应体是否包含某个字符串
Response body:Contains string
// 断言响应体包含指定字符串
pm.test("Body matches string",function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");});pm:postman的一个实例6test():postman实例的方法,有两个参数参1:断言后显示的文字提示信息,可改。参2:匿名函数
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
//意思:pm期望响应文本中,包含xxxx字符串。 "string.-you_want_to_search"->预期结果。可以修改
3.断言响应体是否等于某个字符串(对象)
Response body:Is equal to a string
//断言
响应体等于某个字符串(对象)
pm.test("Body is correct",function (){pm.response.to.have.body("response_body_string");
});
pm.response.to.have.body("response_body_string");
//意思是,pm的响应中应该有响应体xxx
"response_.body_string"->预期结果。可以修改
4.断言JSON数据
Response body:JSON value check
//断言json的响应结果
pm.test("Your test name",function (){var jsonData pm.response.json();pm.expect(jsoneata.value).to.eql(100)
});var jsonData pm.response.json();//var jsonData用js语法定义-一个变量。jsonData就是变量名//pm.response.json();代表响应的json结果//举例:response.json();/*"success":true,"code":10000,"message":"操作成功!","data":"95c78d75-721c-40fb-b2d5-742fea42cbd5"/
pm.expect(jsonData.value).to.eql(100);
//pm 预期json结果key对应的值等于xxx
/*举例:jsonData.value的value:取:success、code、message、data
*/
5.断言响应头
Response headers:Content-Type header check
【响应头不只:Content-Type】
//断言响应头
pm.test("Content-Type is present",function (){pm.response.to.have.header("Content-Type");
});
pm.response.to.have.header("Content-Type");
pm的响应头中包含Content-Type
//示例:可以在header中,添加响应头中的key对应的value判定。用,隔分。
//断言响应头
pm.test("Content-Type is present",function (){pm.response.to.have.header("Content-Type","application/json;charset=UTF-8");
});