
这个问题之前困扰了我很久,一直搜索类似的博客都没找到答案,终于自己慢慢摸索中找到了答案!(博客引用请注明链接,谢谢。) 用postman做接口测试,肯定会遇到上一接口的返回值给下一接口调用的问题,那么需要可将上一参数设置为全局变量。 1、如图1的“parentId”要给到下一接口调用,可将“parentId”设置为全局变量(图2)。在“Tests”中写入代码为:var data = JSON.parse(responseBody); //获取所有的返回数据;tests[data.result] = responseBody.has("true");//返回数据中有“true”tests[data.msg] = responseBody.has("登录成功");//返回数据中有“登录成功”。(这两个断言依照返回数据填写)pm.globals.set("parentId", data.data.parentId);//将“parentId”设置为全局变量(“parentId”在返回数据中是唯一的) 2、设置好后,点击发送,“parentId”的值就自动填写到全局变量中(图3) 3、遇到返回值中需要调用的参数不止一个,但是要调用第2个,返回数据如图4--“parentStudentId”不止一个,该怎么办呢?如果按照上面的代码“pm.globals.set("parentStudentId", data.data.parentStudentId);”发送的话,是获取不到“parentStudentId”的值(图5) 4、因为data的数据中“parentStudentId”有多个值,那肯定代码中要注明获取的是data数据中的哪个,即data[1]表示取第2个,data[0]表示取第1个。代码如图6(pm.globals.set("parentStudentId", data.data[1].parentStudentId););此时再请求下,则可获取到“parentStudentId”的值了(图7).
Jmeter如何将返回值作为下一接口的参数?1、添加线程组2、添加察看结果树3、先创建一个http请求--家长ID,添加接口响应的参数; 4、在察看结果树中运行下: 5、在下一接口中-“家长ID、学生ID”中需要调用“家长ID”中的参数 6、添加:后置处理器--正则表达式提取器。(从哪个接口获取就添加到哪里) 引用名称:变量名称正则表达式:"parentStudentId":(.d*) (因为提取的是数字,所以用:d)模板:模板是使用提取到的第几个值;匹配数字:0 代表随机取值,1 代表全部取值缺省值:表示参数没有取到值的话,默认给它的值。一般不填 7、修改下需要引用的接口参数:"parentStudentId":${parentStudentId} 8、因为我要提取的是数字,所以用d,可以百度“正则表达式”查找下需要的元字符。 9、那如何判断正则表达式是否正确? 可以使用“正则表达式在线测试”,我用的是菜鸟工具。 复制第一个接口的响应数据到匹配文本中,再输入正则表达式,点击“测试匹配”,验证你的正则表达式是否正确。