今天我来给大家简述一下什么是接口自动化
接口自动化指的就是 用脚本的形式 对接口进行类似于工具一样的测试。只不过其运用了脚本的形式。可以校验的方式更加方便以及多样化。
首先就是最简单的单接口请求 通过其返回值进行校验,来自动化的断言其是否正常
例如我们请求一个单接口A
url = "http://aaa/aaa/aaa" 注释:接口地址 body = { 注释:请求post接口需要携带的参数 用这种形式传过去 "email":"aaa", "password":"aaa" } header = { 注释:header也是先写成这样,后面真正请求post的时候 带过去 "Content-Type":"application/json" } result = requests.post(url= url,data=body,json = header) 注释:这一行就是将上面准备好的需要传的参数。传过去。
这个就是简单的请求一个post请求 result 就是服务端给你响应回来的结果。从编写接口地址,到最后的请求完成。这就是最简单的一个用代码编写的接口请求。
这个接口请求并没有完全完成。接下来还要进一步处理以及断言,然后再自动化跑的时候,才能判断出是否符合预期。
res = result.json() 注释:该行代码告诉我们 将返回的结果 转化为 json格式
print(res) 注释:将其打印出来,会发现是一个{}字典格式的内容 或者 {[]} 列表和字典相嵌套的一个返回结果
通过res["error"] 这样的格式 就可以将你需要的字典下的键值对的键 来查找到其对应的值。 也就是根据键取值。
如果遇到列表 没办法用get怎么办呢? 用res["键"]["键"][0] 用角标来获取到里面的内容。
然后将那些固定不变的数据进行取出来。进行断言 判断 是不是 正确的返回了这个值。来判断这个接口就是不是请求成功,是不是返回了我们想要的预期结果。
这个是单接口的请求。当然 还会有多接口请求,以及连接数据库。将某些值传入数据库进行查询对应的值。以此来实现高级校验。
其实我们动态校验我们json返回得值 需要根据你实际的情况来判断,有的是固定的结果 所以你可以直接找到对应的字段 如果这个字段的value永远不变 那么你就是写死断言都可以。但是有的断言是不能写死的。下面举个例子:
1. 我们信息流 关注列表的接口 是肯定不能写死的。因为你新增一个关注的人 你可能列表里面的字段你就会变化。所以你通过角标来定位是肯定不行的。这就是动态的列表 你想要校验 你就需要运用到jsonpath这个方法,通过你固定不变的值 来找到你对应需要排查的字段。 同时 通过这个固定不变的字段去数据库查找对应的id 来判断是否和请求到的值一样 。
如果是切换环境,数据库都不一样了。如果也要去验证 就需要进行先去请求数据库这个表的这个字段,通过角标查到两个字段。然后 回来用这个字段查json 看看存不存在。
这就是 断言 一个简单接口的测试 以及如何断言。