🎉🎉接口自动化框架代码
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 国际许可协议