第一种:将返回值提取,并设置成环境变量
第一步:提取返回数据
1.请求成功之后,按照下面操作选择,一共有两种方式
提取返回数据的两种方式:
第一种:自己选择jsonpath 然后自己编写提取方式:
比如:$..name (这种方式可以比较偷懒,不需要管层级关系,会把所有name的值都会获取到)
$data[0]name(根据层级一层一层找,找到自己想要的name的值。结构不变的情况下,查找会更快一些。)
第二种:直接选择推荐JSONPath提取,右侧会出一个弹窗会自动帮你填入,so easy!
第二步:将提取的变量存放到全局变量中
vars.put(${__metersphere_env_id}+"key","value"); 设置成全部变量,单接口测试推荐用这个
vars.put("key","value") 设置成局部变量,创建接口自动化场景的时候推荐使用。
补充:经过尝试,第二种方法在以下情况的接口自动化场景可以使用。
1.新建的场景
2.引用前一个场景后 ,获取引用场景设置的变量
2.在环境变量中先设置值,后期获取之后进行修改。
count=int(${count})
count= str(count+1)
vars.put(${__metersphere_env_id}+"count",count);
第二种:将上一个接口作为前置脚本,并设置成局部变量。保证接口获取到最新数据【针对需要动态获取接口返回数据的情况】
第一步:添加组件【记得修改一下代码语言,不然运行之后会报错】
第二步:选择你需要的接口
第三步:将获取的返回值进行提取并设置成局部变量
这个是我找了资料之后,按照对方的格式写的,你也可以按照自己的返回值来试一下。【tips:metersphere 有时候会出现问题,你的代码什么写的都没有问题,但还是会报错。这个时候可以把代码复制到本地,然后修改一下再黏贴上去,就可以正常运行 】
记得导入json
import json
json_data=json.loads(data)
items=json_data.get("content",[])
issueid=items['list'][0]['id']
issueNo=items['list'][0]['issueNo']
log.info("issueid:"+issueid)
vars.put("issueid",issueid)
log.info("issueNo:"+issueNo)