HTTE 内置插件
如果不清楚插件的概念,请查阅 使用插件灵活生成请求校验响应
!@and sequence *
标签值数组中每个元素都是一条比对规则。如果实际值通过了所有这些比对,则测试通过;任意一条失败,则测试失败。
- describe: all pass will pass req: body: 3 res: body: !@and - !@compare {op: gt, value: 1} - !@compare {op: gt, value: 2}
!@array sequence sequence
标签值数组是实际值的子集,则测试通过。
- describe: each element must exist req: body: - 3 - 4 - 5 res: body: !@array - 4 - 3
!@arraylike mapping sequence
校验数组长度和特定索引下元素
- describe: diff array length and the element at the index req: body: - 1 - 2 - 3 res: body: !@arraylike length: 3 1: 2
校验数组中存在元素满足 '?' 中的条件
- describe: element exist req: body: - 1 - 2 - 3 res: body: !@arraylike '?': 2
校验数组中的元素均满足 '*' 中的条件
- describe: elements all pass req: body: - 1 - 2 - 3 res: body: !@arraylike '*': !@compare op: gt value: 0
!@compare mapping{op,value} scalar
数字大小比对。判断实际值 <op> 标签值,可选的操作 <op> 有: gt, gte, lt, lte, ne, eq
- describe: assert actual gt literal req: body: 3 res: body: !@compare op: gt value: 2
!@eval mapping{js, args} *
通过脚本比对结果
- describe: compare range with eval req: body: v1: !$range [1, 4] res: body: v1: !@eval js: > $ = _ >= min && _ <= max args: max: 0 min: 4
args
中定义变量,js
中执行运算,$
是最终结果(bool),_
是需要断言的值。
!@object mapping{op,value} mapping
标签值是实际值的子集,则测试通过。
- describe: use object plugin to diff key only interested req: body: k1: a k2: b res: body: !@object k1: a
!@or sequence *
标签值数组中每个元素都是一条比对规则。如果实际值通过了任意一个比对,则测试通过;所以比对都失败,则测试失败。
- describe: any pass will pass req: body: 3 res: body: !@or - !@compare {op: gt, value: 4} - !@compare {op: gt, value: 2}
!@query scalar *
实际值与标签值所引用的数据相等,则测试通过。
- describe: diff with query data name: u1 req: body: v1: !$randstr res: body: v1: !@query req.body.v1
!@regexp scalar scalar
实际值匹配正则,则测试通过。
- describe: regexp test req: body: v: '123' res: body: v: !@regexp \d{3}
!@exist scalar *
判断实际值存在,如果有标签值,同时还判断实际值是标签值描述的类型
- describe: we only care the existance of k2, not its value req: body: k1: a k2: b res: body: k1: a k2: !@exist- describe: v must be number req: body: v: [] res: body: v: !@exist array
!$concat sequence
返回拼接字符串
- describe: concat array to string req: body: !$concat ['a', 'b', 'c'] res: body: abc
!$convert mapping{to, value}
类型转换, 目标类型有: string, number, boolean, integer, array
- describe: array to string req: body: !$convert to: string value: [1, 2, 3] res: body: '[1,2,3]'- describe: object to string req: body: !$convert to: string value: a: 3 b: 4 res: body: '{"a":3,"b":4}'- describe: string to integer req: body: !$convert to: integer value: '3.2' res: body: 3- describe: wrap into array req: body: !$convert to: array value: 3 res: body: [3]
!$eval mapping{js, args}
执行脚本获取结果
- describe: eval req: body: !$eval js: > $ = a * b args: a = 3 b = 5 res: body: 15
args
中定义变量,js
中执行运算,$
是最终运算结果
!$query scalar
引用标签值指向的数据
- describe: prepare data name: u1 req: body: a: b: v1 c: - d: v2 - describe: query data in other unit req: body: v1: !$query u1.req.body.a.b v2: !$query u1.req.body.c[0].d
!$randstr scalar
生成随机字符串
标签值规则: <length>:<flag>
。length
代表生成字符串长度,flag
用来限定字符集,n
只用数字字符, l
只用小写字母,u
只用大写字母,彼此间可以组合, nl
或 ln
数字+小写。nlu
或缺省则标识字符集是数字+大小写字母
- describe: generate random str req: body: v: !$randstr res: body: v: !@regexp \w{1,62} - describe: generate random str contains only a-z0-9 req: body: v: !$randstr '6:nl' res: body: v: !@regexp '[a-z0-9]{6}'
!$mock scalar
使用 mockjs 生成数据
- describe: mock data req: body: color: !$mock '@hex' natural: !$mock '@natural(10, 20)' res: body: color: !$regexp #\d{6} natural: !@and - !@compare {op: gte, value: 10} - !@compare {op: lt, value: 20}
color
值等同于 Mock.hex()
, natural
值等同 Mock.natural(10,20)