前言
本文章的内容抄录自郭宏志老师在优快云发布的课程<<Postman接口测试>>, 由于这个视频没有提供课程笔记, 所以很尴尬的只能自己抄下来作为笔记使用. 本文的内容截图和代码都是自己敲上去的, 但是定义解释很多是抄下来的。
视频链接: https://edu.youkuaiyun.com/course/play/26898/350102.
脚本简介
Postman包含一个机遇Node.js的强大运行时, 该运行时可让你想请求和集合中添加动态行为. 这样, 你就可以编写测试套件, 构建可以包含动态参数的请求, 在请求之间传递数据等等。 JavaScript代码可以在2个事件期间执行:
- 在将请求发送到服务器之前, 作为pre-request script选项卡下的预请求脚本.
- 收到响应后, 作为test script选项卡下的测试脚本
你可以将预请求和测试脚本添加到集合, 文件夹, 集合中的请求或未保存到集合的请求.
举例
在预请求脚本中输入
// 在预请求中设置全局变量
pm.globals.set("variable_key", "variable_value");
// 输出日志
console.log("预请求脚本")
在测试脚本中输入
// 返回状态码200
pm.test("状态码:200", function () {
pm.response.to.have.status(200);
});
// 输出日志
console.log("测试脚本")
运行之后,会返回测试结果
脚本的执行顺序
在Postman中, 单个请求的脚本执行顺序如下所示:
- 与请求关联的预请求脚本将在发送请求之前执行
- 发送请求后, 将执行与请求关联的测试脚本
对于集合中的每个请求,脚本中奖按一下顺序执行:
示例:
测试脚本
使用Postman, 你可以使用JavaScript为每个请求编写测试脚本。
编写Postman测试脚本
Postman测试实质上是在发送请求后执行的JavaScript代码。
示例代码:
// 检查当前的状态码
pm.test("返回的状态码应为200", function(){
pm.response.to.hava.status(200);
});
// 检查检查环境变量的值
pm.test("环境变量env的值应为production", function(){
pm.expect(pm.environment.get("env").to.equal("produciton"));
});
// 该方法内的3个判断都需要为真才算测试通过
pm.test("检查响应内容", function(){
pm.response.to.not.be.error; // 响应没有错误
pm.response.to.have.jsonBody(""), // jsonBody为空
pm.response.to.not.have.jsonBody("error"); //jsonBody没有错误
})
代码片段
尽管编写测试时要记住的事情很多, 但Postman可以通过编辑器旁边列出常用的代码片段来简化此过程。
你可以选择要添加的代码片段, 并在测试编辑器中填充适当的代码。 这是快速构建测试用例的好方法。
常用代码片段翻译
代码片段 | 中文描述 |
---|---|
Get a global variable | 得到一个全局变量 |
Get a variable | 得到一个变量 |
Set an environment variable | 设置一个环境变量 |
Set a global variable | 设置一个全局变量 |
Clear an environment variable | 清空一个环境变量 |
Clear a global variable | 清空一个全局变量 |
send a request | 发送一个请求 |
status code: Code is 200 | 状态码是200 |
Response body : Contains string | 响应的body包含某一个字符串 |
Response body: JSON value check | 响应的body是JSON格式的 |
Response body: is equal to a string | 判断某一个body是某一个字符串 |
Response headers: Content-Type header check | 响应头信息的Content-Type必须出现 |
Response time is less than 200ms | 响应的时间小于200毫秒 |
Status code: Successful POST request | POST成功的状态码 |
Status code: Code name has string | 状态码的名称 |
Response body: Convert XML body to a JSON object | 将响应的body从xml格式转换为JSON格式 |
Use Tiny Validator for JSON data | 验证JSON数据 |
查看结果
结果显示在响应查看器下的Test选项卡中。 标签页眉显示了通过了多少次测试, 并在此列出了测试结果。 如果测试评估为真,则测试通过。
分支和循环
运行集合时, 你可以使用postman.setNextRequest(“request_name”); 在Postman中的API请求之间进行分支和循环.
设置下一个要执行的请求
集合中如果有A、B、C三个请求, 正常情况下,这三个请求是按照顺序运行下去,但是我想运行完A请求之后跳过B运行C请求,这里就可以用到postman.setNextRequest(“request_name”);
循环当前请求
将当前运行的请求名称提供给setNextRequest可以让Postman连续运行当前请求。
但是要注意,这个方式是一个死循环,可以通过在下面加一句 *postman.setNextRequest(null)*停止循环。
- 关于分支和循环,Postman本身是支持JavaScript语法的,因此也可以用if和for来做分支条件和循环。