接口测试(二)

COOKIE请求

认证授权,记住用户的行为状态,存储在客户端

 

 

SEESION请求

存储在服务端

TOKEN请求

本质上是通过session原理实现的

称之为一个令牌

jwt

每次生成的token都是不一样的

Charles实战

查看网络请求: 1、浏览器的network 2、使用工具,如charles,fiddlen

打开工具,可以对指定页面进行性能测试,右键

 

 

 

POSTMAN实战

接口文档 YAPI

PostMan是⼀个客户端接⼝测试⼯具,使⽤该测试⼯具,可以管理多个接⼝测试⽤例,对于多个接⼝测 试⽤例的管理是通过集合来进⾏管理的。PostMan在研发体系当中应⽤⽐较⼴泛。其实再本质上,我们可以把PostMan的集合理解为测试套件,那么在⼀个测试套件⾥⾯可以包含多个测试⽤例,集合也是如此。在PostMan中,可以运⾏集合来执⾏集合⾥⾯所有的API的测试⽤例。当然使⽤PostMan的测试⼯具,可以完成API的⾃动化测试,以及⼿⼯测试

PostMan常用请求

发送GET请求

下⾯主要使⽤PostMan来发送GET的请求,该接⼝的请求⽂档具体为:

以下是 HTTP GET 请求和响应示例。所显示的占位符需替换为实际值。

GET /WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=string&userID=string HTTP/1.1
Host: ws.webxml.com.cn

在PostMan的请求具体可以为:

发送POST请求

application/x-www-form-urlencoded POST也是⽐较常⽤的请求⽅法,下⾯具体演示下在PostMan中POST请求⽅法的应⽤,接⼝⽂档的信息为:

POST /WebServices/MobileCodeWS.asmx/getMobileCodeInfo HTTP/1.1
Host: ws.webxml.com.cn
Content-Type: application/x-www-form-urlencoded
Content-Length: length

mobileCode=string&userID=string

除了get请求,其他都需要设置请求头,否则会出错

x-www-form-unlencoded
xml

json

PostMan断言处理

在⾃动化的测试中,每个测试⽤例都必须得有断⾔,没有断⾔的测试⽤例是⽆效的,不管是⼿⼯的还是⾃动化测试的,只不过在⼿⼯中叫期望结果,在⾃动化测试中叫断⾔。这地⽅并不在乎称呼。我们还是以具体的案例为主,下面调⽤获取所有书籍的信息,调⽤后,返回的所有书籍为:

"user": {

"uid": "adGw32EcTpNmbYrN2mXCkA",

"telephone": "13484545195",

"username": "无涯",

"email": null,

"avator": "",

"date_joined": "2022-01-08T15:07:01.003115+08:00",

"is_active": true

}

那么我们需要验证返回的这些数据到底是对还是不对的,在PostMan的测试⼯具⾥⾯,编写这部分的主要主要是在 tests⾥⾯,具体如下:

下⾯我们针对返回的所有书籍信息,来进⾏接⼝的验证,编写的tests代码如下:

//获取到响应数据

*var* jsonData=JSON.parse(responseBody)

 

//输出

*console*.log(jsonData)

 

//验证username字段

tests["验证username字段"]=jsonData.user.username='无涯'

 

pm.test("Status code is 200", *function* () {

pm.response.to.have.status(200);

});

PostMan执⾏后,就会在Test Results⾥⾯显示接⼝执⾏的结果信息,具体如下:

 

PostMan参数传递

PostMan包含了强⼤的node.js的运⾏环境,所以在PostMan的tests中可以通过js的代码来解决请求参数的传递以及动态参数的处理。事实上,在API的⾃动化测试中,需要解决的是API之间的参数传递,而且这些参数很多时候都 是动态参数。这样通过js的代码能够很轻松的来解决这个问题。⼀般性的,登录成功后,服务端会返回token给客户端,下个请求需要带上token,这样才能够请求处理成功。那么在这样的⼀个案例中,就涉及到了token的原理 和它的实现思路,不过,在这⾥并不计划讲token的原理和思路,只单纯的说针对这种情况的解决思路,具体步骤如下:

客户端登录成功后

获取到客户端的响应数据后,在客户端的响应获取中获取token,并定义成⼀个变量

在下个API中,在请求头中调⽤该变量,调⽤变量的方式为{{变量}}

由于是在PostMan中,所以就需要按顺序执⾏,也就是说,先执⾏登录的接⼝⽤例,再执⾏登录成功后的接⼝

这里还是以测试平台为案例,我们先登录,⽣成token,然后在查看登录的时候,需要把这个变量传进去,我们先来看生成接口的信息:

 

下⾯来看在获取登录⾥⾯,就会调⽤这个变量的信息,具体如下:

注意:在关联中,针对执⾏,我们是在collections⾥⾯来进⾏执⾏。

Collections

在所有的单元测试框架⾥⾯(Junit,TestNG,Pytest,UnitTest)⾥⾯,都会存在测试套件的概念,测试套件可以把它简单的理解为每个测试⽤例的集合,在测试套件⾥⾯可以容纳很多的测试⽤例。在PostMan测试⼯具⾥⾯,可以使⽤ Collections,也就是集合,其实本质上就是测试套件的意思,我们⾸先来进⾏创建:

⽐如在上⾯中,我们把测试平台管理的接⼝测试⽤例都添加到测试平台API实战的集合⾥⾯,具体如下:

下⾯具体演示下collestions的执⾏,在集合中右键,点击Run collection,如下所示:

点击后,就会出现如下的截图信息:

在如上的截图中,点击Run测试平台API实战,就会开始执⾏,具体执⾏结果信息如下:

 下面整合一个较为完整的框架:

 

NewMan

在PostMan的测试⼯具中,也是可以结合NewMan的⼯具再命令中来执⾏PostMan,⾸先需要搭建 node.js的环境,搭建成功后,执⾏如下命令安装NewMan,安装命令为:

npm install -g newman --register=https://registry.npm.taobao.porg

当安装后控制台输入Newman -v显示不是内部或外部命令时,重启电脑,看newman是否还存在我的newman实在D:\Program Files (x86)\nodejs中,如果已存在node_cache和node_global即可不用重新创建,按步骤一步一步来即好

如果不存在则解决办法参考

安装成功后,在控制台输⼊newman,就会显示如下信息:

 

然后通过导出项目

 

我们导出是⼀个JSON的⽂件,然后执⾏命令来执⾏,执⾏的命令为:

newman run (路径)Book.postman_collection.json

执⾏后,就会显示出执⾏的结果信息,具体如下:

 
posted on 2022-09-24 16:47  xiaobia1  阅读(37)  评论(0)    收藏  举报