postman使用(三)
上一篇我们已经实现了将前一个请求的响应值传递下来,那么接下来跑一下工程(collection)
一、Runner
runner,我个人把他称为执行器
打开runner界面,可以看到左边上方是collections,前面说过collection相当于一个工程,下面是执行的环境,循环次数,延时时间、log、数据文件、是否允许变量变化,右侧为执行结果,选择好要执行的collection,设置好下方的选择,点击run就开始执行了
二、Runner设置项
1、environment
不选择environment就无法使用对应环境变量,当然全局变量是可以使用的
2、iterations
循环次数,我们设置2跑一下看看
执行结果可以看到循环1和循环2
3、delay
延时…间隔多少ms发送下一个请求
4、log responses
em…理解不了,那就直接搞一下看看
这是for all requests
这是for failed requests,因为request是成功的,so,没记录response body,for no requests就不试了,总归就是都不记录的了
5、data
嗯,从文件读取数据,支持json和csv,我们试下csv
第一行是变量名(key),下面是值(value)
在变量配置处设置key,value=data.key,这里注意下,文件中的key名字要和引用时变量名一致,比如文件key为phone,变量设置key=mobile,value=data.phone,最后引用{{mobile}}这样是不行的,我也不懂为什么要这样限制,不是很友好
++++++++++++++++++++++++++++我是分割线+++++++++++++++++++++++++++++++++++++++
Sorry,分割线上方有误,现更正 当runner中使用datafile,无需设置environment variable,也就是无需设置那个value=data.XXX,所以也就解释了为什么引用时的key name必须和datafile中的key name一致的问题。。。比如发请求时引用{{mobile}},会直接去datafile中找mobile这个key,而不是去environment variable中找mobile这个key的value值data.XXX再去datafile中找XXX这个key
添加后可以发现iterations自动变成了文件中value的行数,每一行数据都会执行一个循环,run一下看看
iteration2的mobile传了第二条数据158,iteration1的mobile传了第一条数据136,done,由此我们也实现了从文件读取数据,可以在文件中准备测试数据了
6、persist variables
字面意思“保持变量”,好像读着不太明白,那继续搞一下看看,我们之前登录后存下了环境变量userkey,value是之前登录用户的userkey值,我们初始化变量值为111
把persist variables勾去掉,执行一下
看到userkey正常获取并传递使用,再来看环境变量
value还是111
我们把persist variables勾上再执行一下
再看一下环境变量
看下userkey的value,done!
三、流程控制
runner执行collection是将collection中的请求按顺序从上往下顺序跑,万一我们准备了一个错误密码的数据呢,我们把之前文件的密码改一个222222看看
emm…报错了,打开console再看一下,在View下可以找到show postman console,再跑一次看看
没有user对象,密码错误,接口返回的结构也就变了,没有了user也就拿不到userkey了,没有userkey也就没必要再调后续接口了,那我们就改下tests
加个if判断下是否登录成功,不成功则终止这轮iteration,成功则设置userkey环境变量
这里使用了postman.setNextRequest();方法,空值则代表终止,也可以填入自定义的接口name,或者collection中的顺序位置比如1、2、3等,指定下一个执行哪个request,保存一下,再次执行
没有报错,可以看到iteration1请求了checklogin后就终止了,记得指定request不要导致死循环
下一篇写postman的tests中我如何与数据库中的数据进行比较