场景用例输出表达式


场景用例表达式作用域范围:

  • 同一个场景中,当多条用例输出相同key的参数,后执行的用例会覆盖该参数,引用时的值采用就近原则。

  • 同一个场景中,当用例引用变量参数时,先从上游用例输出参数中获取,若获取不到变量参数则从相应的作用域范围的公共参数中获取。

1、场景用例表达式基本使用方法。

输出表达式分为三部分:输出的key值、数据来源以及输出表达式。

1、输出的key值:下游步骤用例获取上游用例值的唯一标识,可随意命名。若key值相同,后执行的用例输出会覆盖前面的用例输出。

2、数据来源:响应体、响应头、MD5、时间戳(秒)、时间戳(毫秒)、请求体、请求头、请求url。

  • 响应体:表示数据来源为当前用例执行返回的响应body。

  • 响应头:表示数据来源为当前用例执行返回的响应header。

  • MD5:表示对用例输出的值或公共参数或上游用例参数输出值进行MD5加密。

  • 时间戳(秒):表示单位为秒的执行用例时的时间戳。

  • 时间戳(毫秒):表示单位为毫秒的执行用例时的时间戳。

  • 请求体:表示数据来源为当前用例中的请求体。

  • 请求头:表示数据来源为当前用例中的请求头。

  • 请求url:表示数据来源为当前用例中的请求url。

3、输出表达式:输出值的表达式是定义获取输出值的方式,根据输出值的类型可以分为以下几种情况。

2.在场景用例表达式中处理响应头数据。

若响应头headers为:

Set-Cookie:BDORZ=27315; max-age=86400; domain=.baidu.com; path=/

Server:bfe/1.0.8.18

Last-Modified:Mon, 23 Jan 2017 13:24:58 GMT

Date:Wed, 14 Mar 2018 07:15:44 GMT

获取响应头中数据,如获取上述响应头中Date的值,输出表达式为Date。在后续用例步骤中通过${dateKey}来使用。

3、在场景用例表达式中处理请求体数据。

如请求body数据为:

timeMS=1522811956561&phoneNum=18257164855&fixed=caroline
  • 若获取请求体中数据,如获取请求bodyphoneNum的值,输出表达式为phoneNum。在后续步骤中通过${phoneNumkey}使用。

4、在场景用例表达式中处理请求头数据。

如请求头数据为:

Connection:keep-alive

Cookie:route=ed12f5; _ga=GA1.2.6876.1596;SESSION=b6a08c-4de7-49ec-9882-eef1f0e2ee;hb_MA-B87E-44F27729;

User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12) AppleWebKit/537.36 Chrome/64.32.186 Safari/57.36

获取请求头中数据,如获取上述响应头中Cookie的值,输出表达式为Cookie。在后续用例步骤中通过${Cookie}来使用。

5、在场景用例表达式中处理请求url数据。

如请求url数据为:

http://api.help.bj.cn/apis/aqi/?id=hangzhou
  • 若获取请求url中数据,如获取请求query中id的值,输出表达式为id。在后续步骤通过${idkey}使用。

6、在场景用例表达式中处理json数据。

如响应body数据为:

BODY
"{...}":
  "code": 200,
  "msg": "success",
  "output":{
     "csd":"123_w",
     "value":75,412
   },
  "data":
   0:
   "position_name": "滨江"
   "aqi": "61"
  "level": "良"
  ...
  9: 5 properties
 10: 5 properties
  • 若获取Json中所有的响应体,输出表达式为$。如输出上述示例响应体值,输出表达式为$,在在后续步骤用例中通过${all}来使用。

  • 若获取Json中数组的长度,输出表达式为len{数组的索引路径}。如输出响应body中data数组的长度值,输出表达式为len{data},在后续步骤用例中通过${data_array}来使用。

  • 若获取Json中第一层级,如输出响应body中code的值,输出表达式为code,在后续步骤用例中通过${codeKey}来使用。

  • 若获取Json中多层级,如输出响应body中csd的值,输出表达式为output.csd,在后续步骤用例中通过${csdKey}来使用。

  • 获取响应body数组中元素顺序是动态变化的值,使用过滤器是用于过滤数组的逻辑表达式,一个通常的输出表达式形如:[?(@.code >=200)],可以通过逻辑表达式&&或||组合多个过滤器表达式。如获取响应中position_name滨江aqi值,输出表达式为{$.data[?(@.position_name == "滨江")].aqi}[0]后续步骤用例中通过${aqi}来使用。

  • 获取响应body中数组对象中的值,若取数组中最后一个值使用result[-1]倒数第二个值使用result[-2],以此类推。如获取响应body中data数组下aqi的值,输出表达式为data[-1].aqi,后续步骤用例中通过${aqiKey}来使用。

  • 获取响应body中某个字符串部分值,使用sub(参数索引路径,n)sub(${start}${end},n)n为截取的位数。如获取响应body中csd参数前三位,输出表达式为sub($.output.csd,3)sub(${"csd":"}${"},3)后续步骤用例中通过${csd}来使用。

  • 获取响应body中某个数字字符串转换为Int类型后的部分值,使用num(参数索引路径,m)m为截取的位数。如获取响应body中value参数前四位,输出表达式为num($.output.value,4),后续步骤用例中通过${value}来使用。

7、在场景用例表达式中处理字符串数据。

若字符串为:

product=6d5c12345b9a6953b69233&userip=123.123.191.60&username=urstest_123@163.com&email=test_123@163.com
  • 获取product的值可以通过截取product=&userip之间的字符串,输出表达式为${product=}${&userip}即得到product的值6d5c12345b9a6953b69233

8、场景用例表达式中处理预留字符串。

定义的预留字符为startendstart表示字符串开头,end表示字符串结尾。

若字符串为:

product=6d5c12345b9a63732d73d85953b69233&userip=123.123.191.60&username=urstest_123@163.com
  • ${start}${userip}所截取的值为product=6d5c12345b9a63732d73d85953b69233&

  • ${username}${end}所截取的值为=urstest_123@163.com

  • ${start}${end}所截取的值为全部。

9、场景用例中参数加减乘除逻辑运算。

场景中用例的参数逻辑运算是在参数输出时进行计算的,然后在下游用例中引用。若响应体为:

BODY
"{...}":
"code": 200
"msg": "Success"
"data":
  "name": "交易额"
  "field": "payAmount"
  "allValue": 7430
  "momValue": "-"
  "appValue": "83.8%"
  "key": null
  • 加减乘除运算。如输出allValue值加m减去n乘以x值作为下游用例参数的输入,输出表达式为{$.data.allValue}+m-n*x。后续步骤用例中通过${allValue}来使用。

Copyright © GoApi 2018 all right reserved,powered by Gitbook该文件修订时间: 2020-03-16 10:40:46

results matching ""

    No results matching ""