当前位置:

Jmeter设置全局和局部变量

访客 2024-01-09 418 0

**目的:使得接口B的请求参数引用了接口A的返回值。**

一、获取接口A的返回值(正则表达器)

1、添加一个setup线程

2、所需要捕捉的返回值

3、选择一个线程右键添加-后置处理器-正则表达式提取器

4、正则表达式提取器页面

(我要提取的是响应参数里的guid值)

参数解释:
应用范围
Mainsampleandsub-sample:匹配范围包括当前父取样器并覆盖至子取样器;
Mainsampleonly:匹配范围是当前父取样器;
Sub-samplesonly:仅匹配子取样器;
JmeterVariableNametouse:支持对Jmeter变量值进行匹配
要检查的响应字段
主体:响应数据的主体部分;
Body(unescaped):针对替换了转义码的Body部分;
BodyasaDocument:返回内容作为一个文档进行匹配;
信息头:只匹配信息头部分的内容;
URL:只匹配URL链接;
响应代码:匹配响应代码,比如状态码200;
响应信息:匹配响应信息,比如返回成功;
引用名称:下一个请求要引用的参数名称,如填写token,则下一个请求接口可用${token}引用它。

模板:用KaTeXparseerror:Can'tusefunction'$'inmathmodeatposition41:…则表达式进行模板匹配,则可以是$̲23$等等,表示提取到的第几个值给引用名称。如:111表示匹配到的第1个值赋给引用名称。

匹配数字:在匹配的时候往往会出现多个值匹配的情况,不同模板可能会匹配一组值,那么可以使用数字来确定取这一组值中的哪一个,0代表随机取值,-1代表全部取值,通常情况下填0。
缺省值:如果正则表达式没有匹配到值,则使用此缺省值给引用名称。
PS:(.?)和(.?)的区别:
(.?)提取1个字符串及以上,不要太贪婪,在找到第一个匹配项后停止;
(.
?)提取0个字符串及以上,要取的值是空值的时候可以取得到。例如:“test":"",如果要取test的值,使用(.?)匹配不到值。使用(.?)则可以取到test的值为空,写法是:“test":"(.?)"。

二、局部变量

1、在此线程组新增http请求

2、Http请求下填参数值信息

三、全局变量

1、在正则表达式提取器下新建后置处理程序,将读取的guid设置为全局变量

2、后置处理器页面:

${__setProperty(newguid,${guid},)};

也可以通过工具-函数助手生成脚本语句:

3、新建线程组

4、新建http请求,参数名称还是填原接口需要的参数名,参数值调用property函数

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~