00:00
好,今天给大家分享一下如何用测试框架去做post,呃,请求的接口的测试,然后我找了一个例子,就是一个开源的社区,他提供的一些就是接口,然后其中那个昨天那个天腾讯天气的也是从他这个里面找到的,然后今天我大家看一下他这个左边这个目录啊,一个是新闻相关的用户相关的,开发者相关的,然后图片,还有这些古诗文诗词啊,这些这些基本就是这这些都是一些比较好用的,大家很多是有一些那个呃,个人的APP开发者,他们喜欢调这些接口,然后他们就做了一个这么一个项目,然后提供了这么多接口,嗯,然后我们今天主要是用这个开发者和这个用户这两个模块的呃接口来演示,然后我们先看一下他先逻辑。
01:00
先要注册开发者完了之后再通过开发者的密钥,然后再去用这个密钥去注册用户,然后开发者登录,用户登录这一块了啊,因为他这个开发者注册呢,嗯,大家看一下他开发者注册这个接口啊,这个接口我刚以为是那个他那个邮箱需要二次验,二次验证呢,结果后来发现不要那个,我已经把它那个写上去了,就是注注册开发者呢,我已经写好了啊,就在这里面,然后这里我就先给大家呃演示一下那个开发者登录,大家看一下开发者登录它主要这个登录这个功能,主要是获取这个API kapik的话,就相当于登录的token一样,然后你看他这个开发者登录完之后,呃,更新开发者的T啊,然后呃用户登录,诶你看这个。
02:00
K就相当于是一个开发者的token权限校验一样,最后我们要先要去呃登录啊,我们看一下登录这个接口是POS的请求,然后他这是他的呃开发者登录的URL,然后这name和passwor,然后这是他的返回响应的一个呃实例,然后就没了,这就他的一个比较简单的开发者的一个文档,然后刚开始写那个四脚本,我们先有一个类型的诶strange URL等于刚才我们复制的这个地址,然后创建一个接层对象,然后用来存放咱们的接口参数,我们看到它的两参数两个啊,Name和passwor。
03:03
我的证那个账号和密码我看一眼。啊,账号密码是一样的,然后passw word,诶这完了,然后我们开始组装,呃,Post的请post的请求对象TP post URL点因因为它这个地方也没有写是杰森还是那个表单,我们就随便先试一下,嗯,大家看这个,呃,用这个方法调的话,呃传的就是表单形式的,那我们先用表单形式试一下,然后这次组装好,然后我们去发送解析这个请求,然后把它打印到控制台,然后最重要的就是test over,然后我们现在脚测的脚本已经写完了,然后我们去运行。
04:07
哎,这就登录成功了,然后这个code的message啊,这个他这是结果这apik啊,你看这个apik这个是跟我这我这是我注册的时候他返给我的apik,但登录的时候也是一样的啊,我怀疑他这个API,因为他我看他的接口有一个清除apik的这么一个功能啊,这个地方清除apik的功能,我怀疑它可能有,有时候可能是不变的,所以说我们这里是先把直接就把它复制到当做一个嗯静态的。这个变量放到这里,然后这这个就算pose的就算结束了,这个请求就算结束了,然后我们怎么去对这个接口进行测试呢?啊,假如说我们现在是对这个接口第一步就先先进行参数验证嘛,对吧?呃参数呢,比如说呃这个地方。
05:02
我在一个。看他识不识别大小写的话F。然后去验证。就是这是一个识别首字母大小写的一个基本原则啊,你看大家看它登录成功了啊,说明它是不区分那个首字母大小写,我们再试一下其他字母大小写,OK,它也是不区分那个其他字本的好写,大家平时在工作中还是这个具体的,呃,到底区分不区分还是需要以各自的需求文档为准啊,因为这个文档就简单的一个请求文档啊,他密码也不。密码也不清楚,我怀疑他是不是不用注册。我输入一个不存在的用户名。看他登录行不行啊,用户名是不行的,我看他的密码T啊,那就是他应该就是呃重用户名和密码都是不区分大小写的,然后我们可以试一下一个不存在的用户,刚才我们打试过,再再试一下不存在的用户,然后或者有可能被删掉的用户,修完修啊,不存在的用户是提示有一个提示,然后我们再设一个错误的密码。
06:39
他这个地方好像是对用户名密码长度也没有什么校验,你们可以试一下,他的密码长度特别长,可能统一的,只要是不不相等的话,统一返回都是400啊,应该是统一返啊啊有有有,虽然说扣的是400,但是这个用户名密码长度不超过14位,呃,用户名不超过16位,密码长度不超过18位,这个是校验的,呃,正常来说这个扣的应该是一个除了400以外的,比如401啊这种这种,呃,具体的话需要我们去跟开发者,嗯,就文档的提供方进行一个细致的沟通,我们第一就是呃先把这个接口调通,第二呢就是。
07:22
呃,去做这种接口的参数验证啊,比如说它的某个参数值,你就像这种用户名不超过16位啊,这种我们是需要拿到开发给出来的文档的,然后我们就需要,呃,把这些所有的情况都便利掉,呃,如果他的code不一样的话,我们要对code进行遍利掉,然后上一次那个get请求也是一样的,这都是比较基础的,然后我们再进行啊业务验证,然这个就没有什么业务验证了,嗯,它的主要业务验证就是。大家看好,我把它记它正确返回的话,正确返回的话会返回你的email,还有这个apik,你看好几次K都一样的,应该是固定的,然后。
08:11
在这个时候呢,我们只需要验证登录成功了,我们可能需要验证这个自己的UR,呃,那个email,还有这个apipik怎么验证呢?呃,如果说它就它应该是一个32位小写的M第五那种形式呢,这个就可能不需要验证,不需要验证它的长度了,或者说它的具体构成了,我们就需要验证它的功能性,比如说我拿到API可去啊注册一个用户吧,就是现在我们,我现在身为开发者,但是我现在要注册一个用户。那个参参数接口就需要用到个a pik,我们要验证呃用开发的登录a pik的业务功能是否是可一样的呢?是否是可用的呢?我们就需要去用户登录那个模块去拿一,呃用用户注册那模块去拿到,然后我们现在嗯先把这个呃方法提出来,呃一般来讲呢,我的我的命名习惯就是方法的命名习惯就是跟他的接口的后面的那个是一致的,就是这样的。
09:26
呃,一方面就是一般接口的命名就是呃跟业务相关的,然后方法的话,命名跟接口一样,方便于自己的记忆啊,这里面我们和password我都是放在放在里面的,如果大家做项目的时候和肯定会涉及到多用户的话,我们都需要把这个用户名和密码就做一个参数化这样的形式,呃,注册用户啊,注册用户这个地方我写了,然后大家看一下这个API apik啊先看一下接口文档吧,用户注册OK啊,这个好多啊,大家看一下这个其实呃类型,呃,必须必须的类型,就这三个有用的,然后我们再看一下这个,嗯,把这个昵称,昵称也给加上去吧,我们是这个地方换换位置。
10:27
这个是用户注册昵称,哎昵称的话我们还要他看开了好了,然后哎这个URL怎么怎么搞,他好像没没提供URL的,嗯,这个URL的话,我看一下就是不是一个公用的URL就可以了。
11:00
因为我之前是呃,在写文章的时候,我用到一个图层啊,图层它会有一个呃这个呃图片的URL看一下是不是意外的也行哦。呃,因为他这个手机号,嗯131。12345678应该不续,他是应该不叫验的email。应该也是不叫呀。平时在做那个测试的时候,这些,呃,首先用到的就是。那个嗯,就是闭然参数,必然参数,然后非闭然参数的话,一般用到用到比较多的,它就是一些非功能性的,比如说页码啊,页码长呃,就每页长度啊这种。
12:05
非比传的像这个用户注册的话,嗯,就是可能多一点,就因为有些注册的时候可能只需要注册一个账号密码就完事儿了,然后面的个人资料是通过另外的接口去做的,如果是呃。从呃使用者的角度来说,我如果注册的时候还要让创业圈乱七八糟的,可能就是影响注册的逻辑,一般就一般就是注册完之后,然后再让你完善,嗯,那个呃用户信息啊,乱七八糟的啊,这我们就写完了。啊,这是一个注册,用开发者账号的key去注册用户,我们看一下这个请求的结果。因为我们已经apik已经结束了嘛。哎,又弄错了。
13:00
OK,完事,那这里面我没有做参数化,如果是写项目的时候,肯定是要做参数化的。OK,这就是注册成功了,大家看一下这些,我看这个he应该是可以访问的,可以访问的他应该是支持不同域名了,然后这也是这就这就是整个就是OK了,就算测试完了,然后我们再呃这调试完了,这个测试的话就嗯进行这些先进行啊闭算参数啊,然后进行非闭参数参数校验之后,然后进行业务验证,业务验证完事之后啊,我们就去就应该去做一些呃脚本上的东西,自动化脚本,还有自动化用例这些设计,嗯,这个接口请求成功了,说明什么呢?说明我们第一步的登录接口的那个API,呃。登录接口那个apik嘛,它是有效的,嗯,我们已经验证了,嗯,登录接口它只返回了两个,一个是apik,一个是email,我们只验证了email的,然后我们现在已经验证了它API是有效的,然后这么来说呢,呃,能够进行业务验证的这两个地方我们都已经验证完了,第二个接口请求登,呃,嗯,就能证明我们第一个接口获取的apik是成功的,然后嗯,如果是嗯,我们可以看一下它,它支持不支持那个用户重复注册,我们再请求一下这个接口。
14:40
啊,用户已经已经存在了啊,这个是呃,然后我们区如果是做第一个接口的登录自动化脚本的话啊,其实呃注册这个其实是呃用这个注册用户这个其验证其实是不太呃不太好的,非常非常不好的,我们一般用那个用户登录啊登录因为登录呃呃用户登录。
15:06
就登录不会造成额外的影响,然后但注册用户会造成额外的影响,所以说那还得用在测试的时候一定要注意,呃,如果我要验证这个K的话,我尽量采取一些呃不会对别的接口造成影响,或者对数据造影响的接口去验证它的呃一些呃比如说呃,像这个接口里面apik啊这样的,然后嗯,我们如果要验证这个我们注册接口。成功了,因为我刚才看到那个注册接口返回来一大堆东西啊,我再给大家演示一下,嗯,那零零一再注册一下。我们要验证这些东西,怎么对这个接口进行嗯,业务的验证呢,哎,这注释掉。
16:00
一般的接口验证的数据参数验证都会很快,而且很简单,然后你看这个,首先我们验证它扣的嘛,就是200,然后message也是成功,但一般来说在呃,如果你的项目是Java的话,这两个应该都是的一个绑定的关系,嗯如果是嗯,如果是较强简单一点的话,其实只沿着那个扣的就可以了。它应该是扣的和message是一个,呃枚举类型的这么一个对象,它其实两个是绑定的,然后我们去验证这个result里面,嗯,首先我们看一下这个登录成功之后,它会呃返回一下这个注册成功,这个用户的信息是就在这个result里面,怎么我们怎么去验证呢?就是他的手机号,那肯定是我们刚才传的,那内容也是刚才传的,这那个还有这些这些乱七八糟东西都是我们刚才传的,就说明我这个用户注册成功了之后,这返回回来的这个用户的信息跟我传给接口的用户信息是一样的,这是一个,然后我们,呃,就业务上来讲,我一个用户注册成功了之后,他接口仅仅给我返回来这个是呃,不能够完全的。
17:16
那个可信。因为很多时候这些信息并不是,呃,有可能是先先把用户写到数据库里面,再从数据库里面读,是这样的,这样的话,这个返回回的信息是比较可信的,但是如果是他先去校验这个用户存不存在,如果不存在立马去进行用户注册这个这一步的话,他有可能返回回来的信息就是直接从接口请求的参数里面拿的,它不是从那个数据库里面拿的,就是这个接口,呃,对于这这个登录接口的参数校验的话,一般来说就是我再去请求一下用获取用户个人信息的这个接口。
18:00
既然注册成功的话,我再去获取一下个人信息,个人信息这个接口肯定是从那个呃嗯库里面,不管是数据库还是缓存里面去拿到的,然后再通过,呃,不一定非要全都给比对完啊,就比对一些嗯参嗯,比如说像这个内幕,像那个phone,呃,像这个email mark可以选一部分去比较,如果比较太多的话也是不太。呃,合适的。因为呃对于呃Java的后端来说,它可能会映射出来一个对象,这个对象可能会改有少一些字段,做一些字段添加字段,都是就改一些字段名啊,这都有可能发生的,所以如果是我的话,我一般我肯定会就按这个这个VIP这个地方,嗯增然当然这也跟业务相关嘛,除了这个呃,Name phone之后,最主要就是个VIP。因为这可能是有用的,因为VIP可能会有涉及到VIP的升降这些问题,这个VIP是可以,呃,可以就是比较关键的嘛,然后啊,这就是一个做业务验证啊,这里面好像没有只有登录用户,登录用户更新。
19:14
啊,更新就更新这些啊,用更新这个其实还是跟这个登录是一样的,我更新完之后,我看见他更新的。你看更新完之后,它也是把这个呃这返回回来的,呃把你信息返回回来的,我认为这个信返回回来信息跟我比如说我把name呃Nina改成呃凡点00001,然后发他给我返成功,然后nickna等于点00001,呃这个我认为它也是不是可信度不高,我还是需要去获取一下用户的个人信息,然后去验证一下我这个nickname是否是成功的。啊是是否是修改成功,现在现在是犯T了,我改完之后是不是犯T00001啊这样的,然后大家如果是要做呃这个呃是是是是比较比较简单,因为什么呢?因为它那个嗯这个APK是写死的,呃没办法去呃做那个不不用去做那个参数化,然后如果是嗯不写实的话,我们只是一个单元,这是这不。
20:20
这只是一个测试用例的话啊,我们就把翻斗啊,我其实不太个人不太愿意写那个翻斗的,我为呃,为什么呢?因为呃这个翻豆洗完之后它就不能改了,谁知道呃,凡事啊不能。呃,写的太那什么了啊,写死了之后那个我看一下,写死了之后再万一再改,其实也挺麻烦的,嗯,Get。再泰value吧。扣的等于200A pik。
21:08
呃,APK我还要再登录一下。如果他这个每次都要变呢,就最好每次都登录一下哦,我们看一下啊,Apik等于点。哎,这就就这就算完了,呃,然后呢啊,这个file是我自己自定义的一个那个参,呃,去返回一个异常,登录异常,然后这就是完了入打印,然后如果它等于200的话,然后我们对apik进行赋值。
22:21
然后完事,然后我们,嗯,在注册用户在的时候。好,就算apik啊,用这个U。大家看这个是空的话,如果。是空的话,然后就放。再就是如果这个复制不成功,它是空的,然后就放,然后其实在这里面其实也不用了。
23:02
如果。呃,失控的话,不应该说这个地方其实验证也不太对,应该就是develop,如果是这样的话就验证它,那我们这次看一下。他会调几次接口,然后我们开,可就这样,正常在写业务的时候不会用这种实业啊,应该会做那个跟对象相关的,来大家看。就我在这个地方,我就会先如果它是为空,或者是那这种乱七八糟的,只要不是正常的格式的,我们这些验证,如果不是的话,我们就调登录,登录去登录里面,如果它响应结果是正常的话,然后这个地方就是ARA,不知道大家有在介绍框架的时候,大家有没有印象,A right就是基本校验一个建对一个项目的建设对象的基本结构的,然后这个地方我就嗯简写成这个校验扣的是不是等于200了,然后不成功的话就是后,然后这整个测试用力就失败掉了,然后我在最外层就get的这个车子用力的呃抛出的异常,完了之后去发送不同的呃不同的预警这样的OK,然后写项目,然后如果是有嗯接口依赖关系的话,我一般都会这么写,如果是单个的测试脚本的话就这么写,如果是项目来说的话,可能会更复杂一点啊,今天的视频就到这儿,欢迎大家关注。
24:30
公众号饭了,改天再见。
我来说两句