POSTMAN接口测试工具--关联技术

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011466469/article/details/78346524
1、用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求! Postman 在发送网络HTTP请求方面可以说是Chrome插件类产品中的代表产品之一。 http://chromecj.com/web-development/2014-09/60/download.html 下载页面 官方地址: https://www.getpostman.com/
2、这里不赘述postman接口测试工具,如何做接口测试,格式及填写方式如图所示:
选择请求方法,写入api地址,设置header信息,body参数,tests验证信息。

3、接口自动化测试,如何做呢?postman提供了一个collections收集的功能,可以把多个接口脚本串成一个业务场景,放在指定的文件夹里,一次可以运行整个接口,即一个业务场景;

4、如上所述,就有问题了,同一个环境,有些操作需要获取令牌token,才能下一步操作?这里就要用到关联技术,习惯叫做关联,如同Loadrunner有关联函数、jmeter有后置处理器(正则表达式)等等;
5、postman提供了环境变量,有自动定义的环境变量以及全局变量;自定义环境变量名称:url,变量名 Variable Name, 变量值:Variable Value

全局变量,如可以设置接口请求的header信息:

变量引用方式双花括号:{{}},如上url地址可以写成{{url}}/login




6、上图tests验证,可以写入脚本,
var jsonData = JSON.parse(responseBody); //获取响应json格式报文
postman.setEnvironmentVariable("token", jsonData.data.result.token); //设置环境变量 token,值为jsonData.data.result.token
tests["token"]=jsonData.data.result.token; //验证响应报文里有token参数返回
tests["Body matches string"] = responseBody.has("毕彩武"); //断言test响应报文结果是否包涵
tips:var 定义一个变量jsonData ,设置 token变量,jsonData.data.result.token 这个值是一级一级往下走的json数据,

7、举例,场景:用户先登录系统,获取token令牌,下一步操作购买接口使用登录返回的token令牌进行操作,这时两个接口就放在同一个collections文件夹;
  • 第一个登录接口,设置tests--环境变量设置响应的token值,
  • 第二个购买接口,传参{{token}}引用环境变量,进行购买操作。

点击postman的runner按钮,选择运行的接口文件夹,设置引用的到环境变量参数,迭代次数Iteration
上图右侧显示tests验证的结果,只是验证通过的tests,想要知道验证断言是否正确,只能看后台日志;

附上以上接口测试的响应日志
8、如此便完成了两个接口的关联动作,不需要先运行一个登录接口,获取token令牌,然后添加购买接口输入token;

tips:delay的单位是毫秒。
9、后续postman强大的功能,可以完成api自动化接口测试。

// 判断是否存在 'user_id' 值 tests[ "Body contains user_id" ] = responseBody.has( "user_id" ); if (tests[ "Body contains user_id" ]){ // 将返回信息解析成对象 var responseData = JSON .parse(responseBody); tests[ "value_user_id" ]=responseData.token.user_id // 设置全局变量 postman.setGlobalVariable( "user_id" ,tests[ "value_user_id" ]);} else { // globals["test_user_id"] 是我在 `Pre-request Script` 中预定义好的一个常量值 postman.setGlobalVariable( "user_id" ,globals[ "test_user_id" ]);}

10、linux系统安装postman命令行运行工具newman, . 命令行运行接口集合:首先下载刚才创建的集合,点击export,并保存到指定路径;

11、再来普及一个postman的 pre-reque st script功能来创建环境变量与全局变量;

预设脚本,可以在api请求的时候使用,参数引用{{}}
如下图,在tests可以检测变量的值是否被引用了;字符串用双引号:

点击postman右上角的眼睛,可以看到预设请求的脚本已经把全局变量和环境变量写进入了;


12、api请求多个,需要关联上一个api请求响应返回的值,在请求发起后设置环境变量,和在发起前设置环境变量用的同一个方法:
postman.setEnvironmentVariable("key", "value"); postman.setGlobalVariable( "key" , "value" ); 前者是环境变量,后者是全局变量,都是可以在请求前后设置为api变量

随机数
PostMan 除了提供环境变量和全局变量外,还提供了三种随机数。
{{$guid}}
:添加一个V4风格GUID
{{$timestamp}}
:将当前的时间戳,精确到秒
{{$randomInt}}
:添加0和1000之间的随机整数

内置脚本说明:
1 . 清除一个全局变量 Clear a global variable
对应脚本: postman.clearGlobalVariable( "variable_key" ) ;
参数:需要清除的变量的key
2 .清除一个环境变量 Clear an environment variable
对应脚本: postman.clearEnvironmentVariable( "variable_key" ) ;
参数:需要清除的环境变量的key
3 .response包含内容 Response body:Contains string
对应脚本: tests[ "Body matches string" ] =responseBody.has( "string_you_want_to_search" ) ;
参数:预期内容
4 .将xml格式的response转换成son格式 Response body:Convert XML body to a JSON Object
对应脚本: var jsonObject = xml2Json(responseBody) ;
参数:(默认不需要设置参数,为接口的response)需要转换的xml
5 .response等于预期内容 Response body:Is equal to a string
对应脚本: tests[ "Body is correct" ] = responseBody === "response_body_string" ;
参数:预期response
6 . json解析key的值进行校验 Response body:JSON value check
对应脚本: tests[ "Args key contains argument passed as url parameter" ] = 'test' in responseJSON.args
参数:test替换被测的值,args替换被测的key
7 .检查response的header信息是否有被测字段 Response headers:Content-Type header check
对应脚本: tests[ "Content-Type is present" ] = postman.getResponseHeader( "Content-Type" ) ;
参数:预期header
8 .响应时间判断 Response time is less than 200 ms
对应脚本: tests[ "Response time is less than 200ms" ] = responseTime < 200 ;
参数:响应时间
9 .设置全局变量 Set an global variable
对应脚本: postman.setGlobalVariable( "variable_key" , "variable_value" ) ;
参数:全局变量的键值
10 .设置环境变量 Set an environment variable
对应脚本: postman.setEnvironmentVariable( "variable_key" , "variable_value" ) ;
参数:环境变量的键值
11 .判断状态码 Status code:Code is 200
对应脚本: tests[ "Status code is 200" ] = responseCode .code != 400 ;
参数:状态码
12 .检查code name 是否包含内容 Status code:Code name has string
对应脚本: tests[ "Status code name has string" ] = responseCode.name.has( "Created" ) ;
参数:预期code name包含字符串
13 .成功的post请求 Status code:Successful POST request
应脚本: tests[ "Successful POST request" ] = responseCode .code === 201 || responseCode .code === 202 ;
14 .微小验证器 Use Tiny Validator for JSON data
对应脚本:var schema = { "items" : { "type" : "boolean" } } ;
var data1 = [true, false] ;
var data2 = [true, 123 ] ;
console.log(tv4.error) ;
tests[ "Valid Data1" ] = tv4.validate(data1, schema);
tests[ "Valid Data2" ] = tv4.validate(data2, schema);
参数:可以修改items里面的键值对来对应验证 json的参数

猜你喜欢

转载自blog.csdn.net/u011466469/article/details/78346524