下载地址:http://getpostman.com Postman接口与压力测试实例 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。它提供功能强大的 Web API & HTTP 请求调试。
![](https://img7.php1.cn/3cdc5/cb94/2be/061811256677f116.png)
1、环境变量和全局变量设置
环境变量可以使用在以下地方:
- URL
- URL params
- Header values
- form-data/url-encoded values
- Raw body content
- Helper fields
![](https://img7.php1.cn/3cdc5/cb94/2be/bc36abfdf6e355f7.png)
先设置好变量名及数值后,接下来就可以调用环境变量名,例如:
![](https://img7.php1.cn/3cdc5/cb94/2be/a935ee5ddb15bb20.png)
key对应的values,填写{{address}},注意需要用双花括号引用。
全局变量设置方法跟环境变量一样,点击"Globals" 后就会出现添加环境变量类似的页面,进行变量和值的设置。
![](https://img7.php1.cn/3cdc5/cb94/2be/2768d73f41093629.png)
全局变量设置应用于整个(Collection)中的请求。
GET 和POST 的区别:
- GET 使用URL 或COOKIE 传参,而POST将数据放在Body 中。
- GET的URL 在长度上会有限制,而POST没有。
- POST比GET相对安全,因为在地址栏不可见。
- 一般POST请求用来获取数据,POST请求用来发送数据。
2、Get请求:
![](https://img7.php1.cn/3cdc5/cb94/2be/647708cada672b00.png)
![](https://img7.php1.cn/3cdc5/cb94/2be/606d2efc26cb4a71.png)
参考开发提供的接口设计文档,提供传参数据录入。
3、post请求:
如常见基本认证的登录用的较多,用户名和密码也可以通过设置的环境变量获取。Postman支持不同的认证机制如: Basic、Digest、OAuth等),支持收到响应语法高亮(HTML\JSON\XML等)。
![](https://img7.php1.cn/3cdc5/cb94/2be/3c85dc7253b98827.png)
下面举一个添加发布会接口例子开展:
![](https://img7.php1.cn/3cdc5/cb94/2be/8d19fd8769f8b8b2.png)
选择form-data方式传参发送。
![](https://img7.php1.cn/3cdc5/cb94/2be/5f0d70a0e1686705.png)
一、Body:
1. form-data
就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
2.x-www-form-urlencoded
就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对
3.raw
可以上传任意格式的文本, 可以上传text、 json、 xml、 html等
4.binary
相当于Content-Type:application/octet-stream 只可以上传二进制数据,通常用来上传文件,由于没有键值,所以, 一次只能上传一个文件。
二、Pre-requestScript 的使用
对于环境变量和全局变量的使用,除了上面所讲的方法外,也可以用Pre-requestScript 方法。
以login接口为例,在"Pre-requestScript"中设置环境变量 "username", "password",在Body 中选取"form-data" 格式,输入所需的key-value, value即为变量{{username}}, {{password}}。
三、Tests使用(断言) 所谓断言,主要用于测试返回的数据结果进行匹配判断,匹配成功返回PASS,失败返回FAIL。 下图方法一,直接点击右侧例子函数,会自动生成出现在左侧窗口脚本,只需修改数据即可。
方法二:直接自己写脚本,如下图所示:
常用tests用法如下:1.检查response body中是否包含某个string
tests["Body matches string"] = responseBody.has("string_you_want_to_search");注意:"Body matches string" 需唯一。2.检测JSON中的某个值是否等于预期的值
var data = JSON.parse(responseBody);
tests["Your test name"] = data.value === 100;JSON.parse()方法,把json字符串转化为对象。parse()会进行json格式的检查是一个安全的函数。 如:检查json中某个数组元素的个数(这里检测programs的长度)
var data = JSON.parse(responseBody);
tests["program's lenght"] = data.programs.length === 5;3.检查response body是否与某个string相等
4.转换XML body为JSON对象
var jsonObject = xml2Json(responseBody);tests["Body is correct"] = responseBody === "response_body_string";5.测试response Headers中的某个元素是否存在(如:Content-Type)
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
//getResponseHeader()方法会返回header的值,如果该值存在或者: tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");
上面的方法,不区分大小写。下面的方法,要区分大小写。6.验证Status code的值tests["Status code is 200"] = responseCode.code === 200;7.验证Response time是否小于某个值
tests["Response time is less than 200ms"] &#61; responseTime <200;8.name是否包含某个值
tests["Status code name has string"] &#61; responseCode.name.has("Created");9.POST 请求的状态响应码是否是某个值
tests["Successful POST request"] &#61; responseCode.code &#61;&#61;&#61; 201 || responseCode.code &#61;&#61;&#61; 202;10.很小的JSON数据验证器var schema &#61; {"items": {"type": "boolean"}};var data1 &#61; [true, false];var data2 &#61; [true, 123];console.log(tv4.error);tests["Valid Data1"] &#61; tv4.validate(data1, schema);tests["Valid Data2"] &#61; tv4.validate(data2, schema);
4、传参场景&#xff08;比如测试登录接口需要不的账号&#xff0c;密码&#xff09;
在接口测试过程中&#xff0c;有的时候需要构建多组同类型数据测试&#xff08;正常数据&#xff0c;异常数据&#xff09;&#xff0c;当然没必要写多条测试用例&#xff0c;可使用CSV格式传参
举个例子&#xff0c;在测试用户登录接口的时候&#xff0c;需要用户输入相应的手机号和密码
那么&#xff0c;需要构建的测试数据有&#xff1a;手机号&密码正确&#xff0c;手机号正确&密码错误&#xff0c;手机号错误&密码正确&#xff0c;手机号为空&密码不为空&#xff0c;手机号正确&密码为空&#xff0c;手机&密码均为空。
如post请求&#xff1a;/api/login?phone&#61;{{phone}}&password&#61;{{password}}
a、可本地创建一个txt文档&#xff0c;并编辑数据&#xff0c;数据的头部必须参数名称保持一致&#xff0c;也就是phone和password&#xff0c;数据如下&#xff1a;
![](https://img7.php1.cn/3cdc5/cb94/2be/345bb8f923faa390.png)
b、然后选择批量运行&#xff0c;即collection runner&#xff0c;操作如下&#xff1a;
![](https://img7.php1.cn/3cdc5/cb94/2be/c89ef792346d3766.png)
数据预览图&#xff0c;如下&#xff1a;
![](https://img7.php1.cn/3cdc5/cb94/2be/8ebadb037b085649.png)
c、最后点击运行就OK&#xff0c;可以在collection runner->Run Results查看运行结果。
5、压力测试
压力测试只能以文件夹的方式执行多个接口&#xff0c;不能单独执行。
![](https://img7.php1.cn/3cdc5/cb94/2be/ff7fc75edbf9baf0.png)
设置并发10次。执行后结果&#xff1a;
![](https://img7.php1.cn/3cdc5/cb94/2be/4e8c94e300f280e4.png)
以上是postman基本操作总结。具体详细可参考官方样例&#xff1a;https://learning.getpostman.com/docs/postman/scripts/test_examples/
作者&#xff1a;YinJia 出处&#xff1a;http://www.cnblogs.com/yinjia/ 本文版权归作者和博客园共有&#xff0c;欢迎转载&#xff0c;但未经作者同意必须保留此段声明&#xff0c;且在文章页面明显位置给出原文连接&#xff0c;否则保留追究法律责任的权利。
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。它提供功能强大的 Web API & HTTP 请求调试。
1、环境变量和全局变量设置
环境变量可以使用在以下地方&#xff1a;
- URL
- URL params
- Header values
- form-data/url-encoded values
- Raw body content
- Helper fields
先设置好变量名及数值后&#xff0c;接下来就可以调用环境变量名&#xff0c;例如&#xff1a;
key对应的values&#xff0c;填写{{address}}&#xff0c;注意需要用双花括号引用。
全局变量设置方法跟环境变量一样&#xff0c;点击"Globals" 后就会出现添加环境变量类似的页面&#xff0c;进行变量和值的设置。
全局变量设置应用于整个&#xff08;Collection&#xff09;中的请求。
GET 和POST 的区别&#xff1a;
- GET 使用URL 或COOKIE 传参&#xff0c;而POST将数据放在Body 中。
- GET的URL 在长度上会有限制&#xff0c;而POST没有。
- POST比GET相对安全&#xff0c;因为在地址栏不可见。
- 一般POST请求用来获取数据&#xff0c;POST请求用来发送数据。
2、Get请求&#xff1a;
参考开发提供的接口设计文档&#xff0c;提供传参数据录入。
3、post请求&#xff1a;
如常见基本认证的登录用的较多&#xff0c;用户名和密码也可以通过设置的环境变量获取。Postman支持不同的认证机制如&#xff1a; Basic、Digest、OAuth等&#xff09;&#xff0c;支持收到响应语法高亮&#xff08;HTML\JSON\XML等&#xff09;。
下面举一个添加发布会接口例子开展&#xff1a;
选择form-data方式传参发送。
一、Body:
1. form-data
就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息&#xff0c;以标签为单元&#xff0c;用分隔符分开。既可以上传键值对&#xff0c;也可以上传文件。当上传的字段是文件时&#xff0c;会有Content-Type来说明文件类型&#xff1b;content-disposition&#xff0c;用来说明字段的一些信息&#xff1b;由于有boundary隔离&#xff0c;所以multipart/form-data既可以上传文件&#xff0c;也可以上传键值对&#xff0c;它采用了键值对的方式&#xff0c;所以可以上传多个文件。
2.x-www-form-urlencoded
就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对
3.raw
可以上传任意格式的文本&#xff0c; 可以上传text、 json、 xml、 html等
4.binary
相当于Content-Type:application/octet-stream 只可以上传二进制数据&#xff0c;通常用来上传文件&#xff0c;由于没有键值&#xff0c;所以&#xff0c; 一次只能上传一个文件。
对于环境变量和全局变量的使用&#xff0c;除了上面所讲的方法外&#xff0c;也可以用Pre-requestScript 方法。
以login接口为例&#xff0c;在"Pre-requestScript"中设置环境变量 "username", "password",在Body 中选取"form-data" 格式&#xff0c;输入所需的key-value, value即为变量{{username}}, {{password}}。
![](https://img7.php1.cn/3cdc5/cb94/2be/45a4c833510076c8.png)
![](https://img7.php1.cn/3cdc5/cb94/2be/3d1d46009bbf45a2.png)
![](https://img7.php1.cn/3cdc5/cb94/2be/871f6d33f186e003.png)
常用tests用法如下&#xff1a;1.检查response body中是否包含某个string
tests["Body matches string"] &#61; responseBody.has("string_you_want_to_search");注意&#xff1a;"Body matches string" 需唯一。2.检测JSON中的某个值是否等于预期的值
var data &#61; JSON.parse(responseBody);
tests["Your test name"] &#61; data.value &#61;&#61;&#61; 100;JSON.parse()方法&#xff0c;把json字符串转化为对象。parse()会进行json格式的检查是一个安全的函数。 如&#xff1a;检查json中某个数组元素的个数(这里检测programs的长度)
var data &#61; JSON.parse(responseBody);
tests["program&#39;s lenght"] &#61; data.programs.length &#61;&#61;&#61; 5;3.检查response body是否与某个string相等
4.转换XML body为JSON对象
var jsonObject &#61; xml2Json(responseBody);tests["Body is correct"] &#61; responseBody &#61;&#61;&#61; "response_body_string";5.测试response Headers中的某个元素是否存在(如:Content-Type)
tests["Content-Type is present"] &#61; postman.getResponseHeader("Content-Type");
//getResponseHeader()方法会返回header的值&#xff0c;如果该值存在或者&#xff1a; tests["Content-Type is present"] &#61; responseHeaders.hasOwnProperty("Content-Type");
上面的方法&#xff0c;不区分大小写。下面的方法&#xff0c;要区分大小写。6.验证Status code的值tests["Status code is 200"] &#61; responseCode.code &#61;&#61;&#61; 200;7.验证Response time是否小于某个值
tests["Response time is less than 200ms"] &#61; responseTime <200;8.name是否包含某个值
tests["Status code name has string"] &#61; responseCode.name.has("Created");9.POST 请求的状态响应码是否是某个值
tests["Successful POST request"] &#61; responseCode.code &#61;&#61;&#61; 201 || responseCode.code &#61;&#61;&#61; 202;10.很小的JSON数据验证器var schema &#61; {"items": {"type": "boolean"}};var data1 &#61; [true, false];var data2 &#61; [true, 123];console.log(tv4.error);tests["Valid Data1"] &#61; tv4.validate(data1, schema);tests["Valid Data2"] &#61; tv4.validate(data2, schema);
4、传参场景&#xff08;比如测试登录接口需要不的账号&#xff0c;密码&#xff09;
在接口测试过程中&#xff0c;有的时候需要构建多组同类型数据测试&#xff08;正常数据&#xff0c;异常数据&#xff09;&#xff0c;当然没必要写多条测试用例&#xff0c;可使用CSV格式传参
举个例子&#xff0c;在测试用户登录接口的时候&#xff0c;需要用户输入相应的手机号和密码
那么&#xff0c;需要构建的测试数据有&#xff1a;手机号&密码正确&#xff0c;手机号正确&密码错误&#xff0c;手机号错误&密码正确&#xff0c;手机号为空&密码不为空&#xff0c;手机号正确&密码为空&#xff0c;手机&密码均为空。
如post请求&#xff1a;/api/login?phone&#61;{{phone}}&password&#61;{{password}}
a、可本地创建一个txt文档&#xff0c;并编辑数据&#xff0c;数据的头部必须参数名称保持一致&#xff0c;也就是phone和password&#xff0c;数据如下&#xff1a;
b、然后选择批量运行&#xff0c;即collection runner&#xff0c;操作如下&#xff1a;
数据预览图&#xff0c;如下&#xff1a;
c、最后点击运行就OK&#xff0c;可以在collection runner->Run Results查看运行结果。
5、压力测试
压力测试只能以文件夹的方式执行多个接口&#xff0c;不能单独执行。
设置并发10次。执行后结果&#xff1a;
以上是postman基本操作总结。具体详细可参考官方样例&#xff1a;https://learning.getpostman.com/docs/postman/scripts/test_examples/