接口自动化测试(4)断言、collection、动态参数、增删改查


一、postman中的断言

(postman中的断言写在Tests)

1. API测试中断言:

1、协议状态码

2、响应数据

3、业务状态码(程序员根据自己的想法来定义的,一个错误信息对应一个业务状态码)

判断一个接口测试用例是否成功(通过)是根据断言的三个条件都成立的情况下得到的结果

(接口测试之间的测试主要是测关联、接口的依赖)

 

2. 实例:登录页面

http://101.43.158.84/#/login      13484545195 asd888

需求:验证状态码、username、uid、telephone、token

2.1打开登录页面进行登录并且捕捉请求、获取请求信息:

 

2.2在postman的断言写在Tests中,判断响应数据、状态码是否等于预期:

     验证协议状态码:

在右边直接点选 “Status code:Code is 200”             ——验证响应状态码是否为预期状态码(如果状态码是201,200的位置就改为201)

 

   验证响应数据:

 首先把响应数据放在一个变量中(jsonData),方便断言的时候调用其中的数据信息。(这里用的是js语言:var后跟变量名)

   var jsonData=JSON.parse(responseBody)   

 

 

    ①验证某个字段的信息是否等于预期:

tests["验证什么"]=响应数据的变量.键.键=="预期结果"    ——验证响应结果中的数据是否等于预期结果(响应数据是json类型,其中的某个值是根据键来获取的)

    ②验证token(每次登录成功后的token都是不一样的,它是一个动态的,想要断言token,要先set到一个变量中,再断言时调用这个变量做断言)

点击右边的“Set an environment variable” , 把jsonData中的token进行set,给jsonData中的token定义一个变量名,用引号包裹;

验证jsonData的token(也就是响应数据中token实际的值)是否等于我们get到的token变量(get变量:点击右边“Get an environment variable”)

【在代码中用set定义的变量就用get来获取,set的变量在get时也要带引号】

 总结:验证响应数据的用例格式为:    tests["验证什么"]=实际结果==预期结果

2.2.3 查看用例的执行结果:

如果出现问题可以在postman中的控制台查看:

二、postman中的Collections

Collections:

  集合,就是测试用例的套件,在这个容器里面,可以存放很多的测试用例。测试套件。

添加集合:

 添加测试用例到Collections:(注意每次修改完用例要点保存Save)

执行collection:

   

 执行后,点击用例名可以看到具体的请求信息和响应信息:

 三、动态参数/关联/上一个接口的输出是这一个接口的输入

3.1在PostMan(非代码处)调用变量的方式是:(变量在整个集合中有效)

{{变量名}}

 

3.2动态参数在postman的解决思路(重点!!):

以登录为例:

1、登录成功后,在登录接口的Tests中定义一个变量获取响应数据中的动态参数token

2、在下个接口(比如首页)中,调用定义的变量,调用的方式是{{变量名}}

3、那么这个过程,需要把登录接口和引用登录接口的变量的接口(也就是首页接口)都需要添加到Collection中,它的顺序是登录接口在前

4、然后执行Collection,这样就能够实现动态参数的关联(在用例中如果调用了之前的用例中的变量,也就是有关联时,单独执行此用例无效,需要执行整个集合run collection)

 

3.3实例:首页

需求:断言首页请求的状态码,断言响应数据

这种依赖登录状态的接口,本质上是在每次发送请求时需要带上session或cookie或token才能发送成功,在构建请求时添加必要的session或cookie或token。如图中的Authorization(鉴权、授权认证)的JWT后的内容就是token,我们在这些接口中就需要调用在登录时的token变量。

 

3.3.1打开首页的请求

 

 3.3.2在postman中添加请求

(填写请求方法、url、Authorization认证授权(JWT 空格后是调用登录测试用例中的变量“jsonToken”)、在Tests中填写测试用例)

注意1:JWT和token之间有空格,token是动态参数,调用的登录用例的token的变量(在登录页面成功后服务器返回的token每次都不一样,我们就在登录用例中定义token为一个变量,在之后的依赖登录状态的接口操作中都需要带着这个token去发送请求(也就是认证授权),所以登录后其他操作在请求头中就要调用之前的token变量)

注意2:此时的请求不能发送成功,因为其中调用了登录测试用例中的变量。做法是:保存此请求至collection中,执行collection。

 

将首页请求添加至collection 后执行collection,如下图 ,点击“首页”,可以看到请求的信息和响应的信息:

 在上图可以看到响应结果,我们可以在请求中(Tests)添加测试用例:(验证响应数据中的api是否为0)

 (编辑完后一定要点save保存,然后执行collection)

3.4实例:在首页添加产品

需求:断言状态码、验证产品id(产品id每次都不同)。

捕捉请求:

 请求数据:

 postman中添加请求(方法、url、请求头(认证授权)、请求数据、断言)

 

 执行collection:

3.4实例:删除产品

需求:验证状态码、验证产品删除

 验证状态码:

验证产品已经删除:

当要验证的信息在当前测试接口的响应内容中不存在时,可以调用其他接口来验证。例如,删除产品的接口,要验证产品确实删除成功了,可以再调用查询产品接口来确认删除成功。

用GET方法(相当于是对删除的产品进行查询,我们知道如果产品不存在,查询返回的数据为[ ],所以断言查询的结果为[ ],说明已经删除了)

 

3.5实例:修改产品

需求:验证状态码和产品id信息

collection添加文件:

3.5实例:查询产品

1、默认查询

2、模糊查询

3、精确查询

默认查询:(不添加value)

精确查询:(查询内容为无涯课堂)

 模糊查询:(查询内容为无涯)

3.6 实例:修改产品名称、类型、版本、负责人、描述

postman:修改产品版本

注意:修改的格式要符合规范,例如产品的类型只能是WEB或APP