接口自动化的关联
Posted cnhkzyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口自动化的关联相关的知识,希望对你有一定的参考价值。
一. 在所有的平台中,凡是有往数据库中增加的接口,必然有相应的查询接口
二. 接口的后台服务除了要把数据返回给我们之外,还要把真正对数据库修改的操作写入数据库
三. 不知道接口实现的逻辑,不知道开发先去更新数据库,还是先给我们返回数据
四. 因此有两种方式,一种是调用相应的查询接口,一种是直接查询数据库(1. 如果系统复杂,有可能查询的语句非常复杂,测试无法自己写,需要开发协助,成本比较高, 2. 不是所有的产品都需要查询数据库,除非对数字、授权比较敏感),因此能用查询接口,就用查询接口
五. 期望结果的两种匹配方式:1. 全值匹配, 2. 正则表达式匹配
六. 有时需要把接口返回的结果作为期望结果存在excel中,有时返回结果很长,已经超过了excel单元格的范围,这种情况下,可以将返回结果写入到文件中,把文件地址直接写在excel单元格中。数据的两种存储方式:1. 直接写在excel中,2. 存储在文件,注意,需要添加一列专门来表达存储的类型(如果存储类型为2,表示要从文件中读取)
七. APP测试中的token,类似于web中的cookie,就是一个用户的身份令牌,登录时向服务器申请身份认证,身份认证成功后服务器向用户返回了一张"通行证",拿到了token值,用户再系统中有很多资源的,比如个人信息、投资记录、余额等等,如果没有权限认证,那么任何人就可以拿走你的钱,就变得很不安全。为了保证别人不去操控你的数据,所以必须向服务器做任何操作时(比如获取个人信息、修改用户余额、充值投资等等),必须每次都告诉服务器你是谁,每次必须带token去验证。token一般都是在登录时生成,而且有有效期的。这就类似于一种关联,token是登录接口的返回数据的一部分,后续的其他接口都要在请求数据中带着这个token(接口之间是由依赖关系的,接口A的返回值的一部分作为接口B的入参)
八. 两种方案:1. 从数据库或缓存中查 2. 从接口的返回值中提取(jmeter或postman都有用到)
九. 有个投资接口的请求数据是: "memberid": "${userid}",而userid是充值接口返回数据的一部分,那么我们需要做两件事,1. 从充值接口返回值中提取,2. 再把提取的值赋值给投资接口的请求数据。考虑到提取和赋值都是运行测试用例的过程中进行的,也就是动态的,而且还不确定有多少个接口要用到这个值,因此提取出来的值需要所有的测试用例都要识别到,用得到(比如把接口A返回的值存储在一个变量中,接口B、C、D都能取到这个值),因此需要变成一个公共变量(全局变量),
十. 步骤
-
告诉代码,哪一个测试用例,是需要提取返回结果当中的值。在excel数据中添加一列"提取表达式",在这一列中,如果有值(提取的正则表达式),表示要提取,先提取赋值再断言,如果没值,直接断言
-
再提取,正则表达式提取
-
告诉代码,哪一个测试用例要用到提取的值,在哪个位置用?占位符来表示被替换的数据
-
将提取的值变成全局变量,变成键值对,声明一个py模块文件中的全局变量,global_var 一个字典类型,在得到接口的响应结果后,判断是否需要提取,如果需要提取,则将提取的结果,存入到global_var当中,以供后续其他接口调用
-
在接口请求之前,判断global_var是否有值并且请求数据不为空的情况下,则进行替换操作
以上是关于接口自动化的关联的主要内容,如果未能解决你的问题,请参考以下文章
python+requests接口自动化3. 接口<参数>的关联与cookie提取