Postman之基本操作
一、创建请求
使用New > Request从Postman启动屏幕中创建新请求,也可以通过单击+按钮打开新标签。
上图执行了最简单的一个GET请求,并没有带参数。
然后,创建一个带参数的请求,如下图所示:
由于请求方法是GET,在参数栏插入参数后,url地址栏会自动将参数添加在url地址中,这也是GET方法相对而言不是那么安全,太容易被人看到敏感信息。
因为在测试过程中,需要判断一个接口输入的参数和返回的参数是否满足需求(期望结果),所以需要给测试加上断言,如图所示在Postman中加断言。
二、Body数据参数
当需要添加或更新结构化数据时,都将需要发送带有请求的正文数据。例如,如果要发送将新客户添加到数据库的请求,则可以在JSON中包含客户详细信息。通常会结合PUT,POST以及PATCH请求方法一起使用。
-
form-data数据
网站表单通常以形式将数据发送到API
multipart/form-data
。您可以使用form-data
正文”选项卡在邮递员中复制此内容。表单数据使您可以发送键值对,并指定内容类型。
form-data参数中可以直接添加参数数据,也可以使用附件文件。
-
x-www-form-urlencoded
URL编码的数据使用与URL参数相同的编码。如果API需要url编码的数据,在请求的“ 正文”标签中选择x-www-form-urlencoded。输入您的键值对以与请求一起发送,postman会在发送前对它们进行编码。
-
raw数据
可以使用原始身体数据发送可以输入为文本的任何内容。使用原始选项卡,然后使用类型下拉列表指示您的数据格式(Text,JavaScript,JSON,HTML或XML),Postman将启用语法突出显示并将相关标头附加到请求中。
-
binary数据
使用二进制数据发送无法在Postman编辑器中随请求正文手动输入的信息,例如图像,音频和视频文件(也可以发送文本文件)。
三、headers数据参数
某些API要求您发送特定的标头以及请求,通常会提供有关您正在执行的操作的其他元数据。您可以在“ 标题”选项卡中进行设置。输入您需要的任何键值对,Postman会将其与您的请求一起发送。键入时,Postman会提示您一些常用选项,您可以使用这些选项来自动完成设置Content-Type。
如果请求的参数特别多的话,一条一条的编辑headers中的KEY和VALUE效率太低,于是可以使用BULK Edit,将头信息至此,比如头信息如下:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Cookie: jenkins-timestamper-offset=-28800000; 2a881_lastpos=index; 2a881_ol_offset=98; ACEGI_SECURITY_HASHED_REMEMBER_ME_COOKIE=YWRtaW46MTU4Mzc1MTU0NTE3OTo2MTI1MzExZGY4OWM5YThiYmNjMzMxYzU3MjY4YzFmYTMzZGFmMzJiNWFjMjVkOWI3MzdmOTg5ZmU3M2VkNzE4; 2a881_lastvisit=1661%091582952510%09%2Findex.php
Host: 192.168.31.55:8000
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36
填充后,格式自动转换成KEY-VALUE形式
四、变量
变量是数据的符号表示,它使您可以访问值,而不必在需要时手动输入它。特别是在多个地方使用相同的值时,这很有用。变量通过抽象一些涉及的细节,使您的请求更加灵活和可读。可变范围适用于Postman中的不同任务:
-
全局变量使您可以访问集合,请求,测试脚本和环境之间的数据。
由于全局变量可能会造成混乱,因此,您仅应谨慎使用它们,例如快速测试某些东西或当您的项目处于原型开发初期时。
-
集合变量可在集合中的整个请求中使用,并且独立于环境,因此请勿根据所选环境而更改。
如果仅使用单个环境(例如,用于auth / URL详细信息),则收集变量是合适的。比如url地址设置为集合变量,如图所示:
最后修改url地址,引入参数
-
环境变量使您可以针对不同的环境定制处理,例如本地开发与测试或生产。一次只能激活一个环境。
如果只有一个环境,则使用集合变量会更有效。
-
局部变量是临时的,只能在您的请求脚本中访问。局部变量值的范围仅限于单个请求或收集运行,并且在运行完成后不再可用。
如果您需要一个值来覆盖所有其他变量作用域,但又不想在执行结束后保留该值,则局部变量是合适的。比如在脚本中设置变量
pm.environment.set("variable_key", "variable_value");
-
数据变量来自外部CSV和JSON文件,以定义在通过Newman或Collection Runner运行集合时可以使用的数据集。
-
动态变量
postman可以在请求当中使用动态变量,动态变量的示例如下:
{{$guid}}
:v4样式的guid{{$timestamp}}
:当前时间戳(Unix时间戳,以秒为单位){{$randomInt}}
:0到1000之间的随机整数
注意:更多的动态变量详见
https://learning.postman.com/docs/postman/variables-and-environments/variables-list/
五、集合
- 新建集合
集合里保存的是一组请求。可以理解为多个测试用例的集合,在集合中方便对测试用例进行管理和执行。
如图所示,可以在侧边栏、新按钮等位置创建新集合。
- 导出集合
六、Script脚本
- 将嵌套对象设置为环境变量
var array = [1, 2, 3, 4]; pm.environment.set("array", JSON.stringify(array, null, 2)); var obj = { a: [1, 2, 3, 4], b: { c: 'val' } }; pm.environment.set("obj", JSON.stringify(obj));
- 获取环境变量
var value = pm.environment.get("variable_key");
- 设置下一个要执行的请求
postman.setNextRequest("request_name");
- 循环执行当前请求
//当前request_name的名称 postman.setNextRequest("request_name");
注意:在连续循环一个请求时,应该包装
setNextRequest
一些逻辑以确保该请求不会无限期地运行,否则将需要强制关闭收集运行器。
- 停止执行工作流程
postman.setNextRequest(null);
- 检查JSON值
pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); });
详见:
https://learning.postman.com/docs/postman/scripts/test-examples/
七、Runner 批量测试
在测试时,经常会需要用到批量测试,因为一般业务会涉及到多个API,所以这些API一般都会保存在一个集合中,要执行业务就需要将这些API全部执行,而在 Postman 中,实现非常简单。如图所示: