来啦老铁!!!
这两周已经开始通勤上班了,路途遥远,经常没把电脑带回来了,周末例外。趁着周末手里有电脑,上点干货!废话不多说,我们直接从postman工具聊起吧!(关于Postman是啥,基本使用介绍,我们就不再赘述了,大家可以看看这方面的文章学习和温习一下)。
postman可是个神器啊,用6了,可以做到API半自动化的效果,甚至结合其他技术手段,可以做到真正的小型API自动化,接下来就是见证奇迹的时刻!
1.脚本和断言介绍;
postman为用户提供了2个脚本入口,一个叫Pre-request Script,一个叫Tests,用户可在这两个入口使用javascript脚本和postman预置的语句,对请求前后做一些操作。
Pre-request Script
这个代表在发起请求前做的一些操作,通常我们可以用其做一些数据准备、调用其他简单接口等操作,官网介绍:https://learning.postman.com/docs/postman/scripts/intro-to-scripts/
我们以一个免费接口 https://api.apiopen.top/getJoke?page=1&count=2&type=video 为例,假设我们每次想要获取不同数量(参数count)的数据,那么我们就必须在请求前设置好数量,这时候Pre-request Script就派上用场了,我们将接口参数化如:https://api.apiopen.top/getJoke?page=1&count={{count}}&type=video
postman上准备如下:
pm.globals.set(key, value):在postman中设置全局变量的用法(除了全局变量,postman还有环境变量,读者朋友请自行脑补哈);
{{}}:postman引用环境变量、全局变量时需用2对花括号包裹;
$randomInt:postman内置的获取1~1000随机数的变量,当然我们也可以用js代码在Pre-request Script获取一个随机数,然后放到pm.globals.set()里头,但不是人人都会,而postman就很人性化地提供了一些较为常用的内置变量,方便用户使用。
postman的内置变量还是比较丰富便捷的,比如$timestamp可获取当前时间戳,$randomPhoneNumber可获取10位随机电话号码,还有一些非常拟真的随机数据,如$randomFirstName和$randomLastName生成的是看起来非常真实的名字,比如Felton Jones,而不是随机的文字而已,这非常人性化呀!
其他postman内置变量可以通过以下途径了解:
在Url上,输入{符号+空格,可查看支持的内置变量;
在非Url上,输入{符号,可查看支持的内置变量;
当我们点击Send按钮后,postman先为我们准备好一个随机数放到全局变量中,请求时postman将从环境变量中获取这个变量,然后发起请求和执行后续的其他操作;
Tests
这个代表在请求完成后做的一些操作,通常我们会在此处做一些校验、数据存储、调用其他简单API等操作,官网介绍:https://go.pstmn.io/docs-test-scripts
此处,我校验了HTTP返回码是否为200;API返回数据中,result数组的长度是否与请求参数count相等;result数组中第一个元素的sid参数是否不为空;同时,我还将sid存储到全局变量池中,供后续其他API使用。
基于Pre-request Script和Tests,我们可以在某些场景下自动地准备数据,并完成测试点验证,测试时不用再人为地填充数据,不用再人工验证API返回或测试点,一定程度上解放了双手,我们可以将其归入半自动化麾下!
为了介绍使用sid和介绍其他功能,我额外准备了一个API,即通过sid获取内容:
2.Runner介绍;
有了上述的基础,我们一起来进阶一下,咱们来学学Runner这个东西,入口和初始界面如下:
假设我们有多个API,这个些API间有依赖关系,执行完第一个API才能执行第二个API,执行完第二个才能执行第三个,以此类推,即使有Pre-request Script和Tests帮助数据准备和测试验证,难道我们一个API一个API的去点吗?如果再遇到需要频繁测试API们,或需要大量调用API来造数据,又只能不停的点点点吗?英语好点的朋友应该能看出来了,对,这个Runner就是来解救大家的。
Runner的几个作用:
控制执行顺序。通过右侧的RUN ORDER,我们可以拖动API,来安排执行顺序,Runner启动后就会按我们指定的顺序执行;
批量循环执行。Interations参数为我们要执行的次数或者叫轮数,Delay是用于控制API的执行速度的,假设Delay设置为1000ms, 那么每个API之间将等待1秒,注意是API间隔,而不是每一轮间隔。
返回信息保留。Save Responses可在执行后保留API返回,让使用者能够反观执行过程和获取返回数据,因为Runner有时候可以用来调用API批量创造数据。
导出测试结果。Runner跑完后,还可通过Run Results页面查看本次的统计报告,同时也可导出本次运行的统计报告,不过导出的报告是Json格式的,大家参考参考。
通过Runner,我们可以批量按顺序执行API们,在实际场景中还是蛮常用的。Runner可以在一定程度上解放测试人员的双手,我们可以将Runner归到半自动化麾下。大家可以根据上述涉及的知识点,自行探索和深入。
夜已深,咱们今天就到这吧,希望本文对大家有所帮助。
下期带大家在使用postman的基础上做自动化,敬请期待!!!