🎉🎉接口自动化框架代码

mysql用例表字段有各自可支持的写法,提升用例的灵活程度

1、headers字段

多个数据间用中文分号隔开,##内为变量将从redis取出替换,示例如下

aa=11;token=##zmm_id##

1)从用例redis获取变量值

redis中value数据类型 key value
字符串 zmm_id zhang00
字典 zmm_id {'aa': 'zhang00'}
数组 zmm_id [{'aa': 'zhang00'}, {'bb': 'zhang11'}]
当value值数据类型为字符串时,写法:##zmm_id##

当value值数据类型为字典时,写法:##zmm_id.aa##

当value值数据类型为数组时,写法:##zmm_id.1.aa## 或 ##zmm_id.2.bb##

2、case_url字段

##内为变量将从redis取出替换,示例如下

/transbiz_2c/user/getFsUserIdByUserId.run?userId=##zmm_userId##

1)从用例redis获取变量值

双##写法,具体写法前面已介绍,不再具体概述

2)特殊变量值

可插入任意位置

时间格式变量:
    当接口传参需要依赖当前时间时,可以直接使用以下写法
    {{秒截止+2m}} ---秒截止表示精确到秒,2m表示当前时间加2分钟,如2021-04-12 15:36:44
    {{秒截止-2m}} ---秒截止表示精确到秒,2m表示当前时间减2分钟
    {{秒截止+2h}} ---秒截止表示精确到秒,2h表示当前时间加2小时
    {{秒截止+2d}} ---秒截止表示精确到秒,2d表示当前时间加2天
    {{秒截止+2M}} ---秒截止表示精确到秒,2M表示当前时间加2个月
    {{秒截止+2Y}} ---秒截止表示精确到秒,2Y表示当前时间加2年
    {{分截止+2m}} ---秒截止表示精确到分,2m表示当前时间加2分钟,如2021-04-12 15:36
    ........
    {{日截止+2d}} ---秒截止表示精确到天,2d表示当前时间加2天,如2021-04-12
    ........
    {{月截止-2M}} ---秒截止表示精确到月,2M表示当前时间减2个月,如2021-04
    ........
    {{年截止-2Y}} ---秒截止表示精确到年,2Y表示当前时间减2年,如2019
    ........

随机手机号:
    当传参中需要随机手机号的,可以使用以下写法   {{mobile}},如想插入redis全局变量可写成{{zmm_xxx.mobile}}

指定长度随机数:
    当需要传5位随机数,可以使用以下写法 {{number5}},如想插入redis全局变量可写成{{zmm_xxx.number5}}

指定范围随机数:
    当需要传指定数字区间的随机数,可以使用以下写法  {{number12-88}}

3、case_param字段

##内为变量将从redis取出替换,示例如下

{"userId": ##zmm_userId##,"agreementSource": 20}

1)从用例redis获取变量值

具体写法前面已介绍,不再具体概述

4、prepose_control字段

接口请求前的前置操作,可以执行操作业务数据库、操作业务redis、调用存量用例、存储自定义变量数据、强制等待特殊变量值,多个使用中文分号隔开,示例如下

apiCase.base_login=zmm-1.1; zmm_id=jsonpath_rela.id; zmm_id=jsonpath_abs.data.0.id; mysql_1.db_name.zmm_id=select id from user_basic where code = 'xxx'; redis.0.zmm_id=hash.select.name.key; custom.zmm_token=da173228-29b3-40c0-b9b0-04b364756c91;

1)调用存量用例

写法:apiCase.表名=用例id(调用单条用例)
示例:apiCase.base_login=zmm-1.1
调用base_login表内,case_id为zmm-1.1的用例

写法:apiCase.表名=用例id#用例id(调用多条用例)
示例:apiCase.base_login=zmm-1.1#zmm-1.3
调用base_login表内,case_id为zmm-1.1、zmm-1.2、zmm-1.3的用例

2)操作业务mysql

写法:mysql_库索引.库名.redis的key命名=sql语句(查询操作)
示例:mysql_1.user_basic.zmm_id=select id from user_basic where user_id='12345'
库索引取自mysql.yaml的business_db数字后缀,因为会存在多个数据库不同的连接信息。
执行sql后查询到id值,命名zmm_id为key,存储至redis中

写法:mysql_库索引.库名.redis的key命名=sql语句(插入、更新、删除操作)
示例:mysql_1.user_basic.zmm_id=update user_basic set user_name='测试' where user_id='12345'
库索引取自mysql.yaml的business_db数字后缀,因为会存在多个数据库不同的连接信息。
执行插入、更新、删除操作不同于查询操作,不会存储变量值

写法:mysql_库索引.库名.redis的key命名=sql语句(存在####)
示例:mysql_1.user_basic.zmm_id=select id from user_basic where user_id='##user_id##'
此写法新增了从redis获取变量值,然后再去直接mysql查询操作,执行sql后查询到id值,命名zmm_id为key,存储至redis中

3)操作业务redis

redis命令为查询操作时,将会把结果存入全局变量,提供后续使用;
redis具体命令请自行在网上借鉴学习

示例:redis.1.zyc_business_token=hmget qa_TEST_interface_params BlogProject_token
语法:redis.库索引(默认16个库).存入用例redis的key名=redis语法

4)强制等待操作

写法:sleep5
强制等待5秒

5)存储自定义变量数据

写法:custom.redis的key命名=自定义值
custom.zmm_token=da173228-29b3-40c0-b9b0-04b364756c91
向redis存储key为zmm_token,value为da173228-29b3-40c0-b9b0-04b364756c91的数据

6)特殊变量值

具体写法前面已介绍,不再具体概述

5、assert字段

实际值和期望值断言语法,支持多个断言使用中文分号隔开,支持双##变量值,示例如下

包含&&{'cardNo':'202305271262994896'}&&;相等(排序生效;类型生效)&&{'id': 11}&&;自定义不相等&&新增文章成功==##zmm_name##&&;自定义包含&&新增文章成功==新增文章&&

接口响应断言

注意:接口响应断言的相等和不相等类型,期望值格式必须使用json格式,其他断言类型无要求

1)相等

写法:相等&&{'cardNo':'202305271262994896'}&&    ---不校验字段顺序和字段字母大小写
&&内的期望值和响应实际值全部一致时,断言成功;有不一致的地方,则断言失败

写法:相等(排序生效;类型生效)&&{'cardNo':'202305271262994896'}&&    ---校验字段顺序和字段字母大小写
&&内的期望值和响应实际值全部一致时,断言成功;有不一致的地方,则断言失败

2)不相等

写法:相等&&{'cardNo':'202305271262994896'}&&    ---不校验字段顺序和字段字母大小写
&&内的期望值和响应实际值全部一致时,断言失败;有不一致的地方,则断言成功

写法:不相等(排序生效;类型生效)&&{'cardNo':'202305271262994896'}&&    ---校验字段顺序和字段字母大小写
&&内的期望值和响应实际值全部一致时,断言失败;有不一致的地方,则断言成功

3)包含校验

写法:包含&&{'cardNo':'202305271262994896'}&&
响应实际值完全包含&&内的期望值时,断言成功;有不包含的地方,则断言失败

4)不包含校验

写法:不包含&&{'cardNo':'202305271262994896'}&&
响应实际值完全包含&&内的期望值时,断言失败;有不包含的地方,则断言成功

5)存在校验

写法:存在&&{'cardNo':'202305271262994896'}&&
&&内的期望值在响应实际值内存在时,断言成功;不存在,则断言失败

6)不存在校验

写法:不存在&&{'cardNo':'202305271262994896'}&&
&&内的期望值在响应实际值内存在时,断言失败;不存在,则断言成功

自定义断言

自定义断言的实际值由自己提供,从业务mysql/业务redis/接口响应/自命名都可以作为实际值

1)相等

写法:自定义相等&&实际值==期望值&&
&&内的期望值和实际值全部一致时,断言成功;有不一致的地方,则断言失败

2)不相等

写法:自定义不相等&&实际值==期望值&&
&&内的期望值和实际值全部一致时,断言失败;有不一致的地方,则断言成功

3)包含校验

写法:自定义包含&&实际值==期望值&&
实际值完全包含&&内的期望值时,断言成功;有不包含的地方,则断言失败

4)不包含校验

写法:自定义不包含&&实际值==期望值&&
实际值完全包含&&内的期望值时,断言失败;有不包含的地方,则断言成功

5)存在校验

写法:自定义存在&&实际值==期望值&&
&&内的期望值在实际值内存在时,断言成功;不存在,则断言失败

6)不存在校验

写法:自定义不存在&&实际值==期望值&&
&&内的期望值在实际值内存在时,断言失败;不存在,则断言成功

6、postpose_control字段

接口请求后的前置操作,可以执行存储接口响应值、调用其他用例、操作业务mysql、操作业务redis、调用存量用例、存储自定义变量数据、强制等待、特殊变量值,多个使用中文分号隔开,示例如下

apiCase.base_login=zmm-1.1; zmm_id=jsonpath_rela.id; zmm_id=jsonpath_abs.data.0.id; mysql_1.db_name.zmm_id=select id from user_basic where code = 'xxx'; redis.0.zmm_id=hash.select.name.key; custom.zmm_token=da173228-29b3-40c0-b9b0-04b364756c91;

1)存储接口响应值

写法:redis的key命名=jsonpath_rela.响应中的字段名
示例:zmm_id=jsonpath_rela.id
jsonpath_rela表示使用相对路径查找接口响应中字段名为id的值,命名zmm_id为key,存储至redis中

写法:redis的key命名=jsonpath_rela.响应中的字段名.索引
示例:zmm_id=jsonpath_rela.id.2
jsonpath_rela表示使用相对路径查找接口响应中字段名为id的值,当查找到多个值仅获取第2个值,命名zmm_id为key,存储至redis中

写法:redis的key命名=jsonpath_abs.响应中的字段名
示例:zmm_id=jsonpath_abs.data.0.id
jsonpath_abs表示使用绝对路径data.0.id逐层查找接口响应中的字段值,命名zmm_id为key,存储至redis中

2)调用存量用例

具体写法前面已介绍,不再具体概述

3)操作业务mysql

具体写法前面已介绍,不再具体概述

4)操作业务redis

具体写法前面已介绍,不再具体概述

5)强制等待操作

具体写法前面已介绍,不再具体概述

6)存储自定义变量数据

具体写法前面已介绍,不再具体概述

7)特殊变量值

具体写法前面已介绍,不再具体概述

7、is_deleted字段

代表是否删除。为0时,调用此用例会执行;为1时,调用此用例不会执行

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://zhangyanc.club/subject/article/api_detail/

许可协议:署名-非商业性使用 4.0 国际许可协议