您的位置:首页 > 其它

JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器

2016-10-25 10:50 811 查看
JMeter把上一个请求的结果作为下一个请求的参数,我使用百度的方法,因为没有理解到提取数据的含义,导致没有获取正确,主要的原因是我要获取参数的格式为:{"code":"100","data":"cableS":"0","chargeS":"","chargeSs":"1","chargerKwh":"0","onlineStatus":"1","portNo":"1","reservationSn":"000030000000010204201991250915220002","usCard":"08000010000000146"},"msg":"..."}

我需要获取reservationSn,我之前一直以为从data获取,使用"data":"(.+?)",一直提示错误,后来修改成"reservationSn":"(.+?)",就正确了。

把百度的方法贴在里面,也把调试的方法记录下来,方便以后查看。

        1. 提参采样器添加正则表达式提取器
        比如上传采样器是 /upload/batchImport/merAdd/20141124/1(因为我们需要从其返回数据中提取我们需要的参数,本文我们称之为"提参采样器"),文件修改请求采样器是 /merServPlat/merInfo/import/add.json(因为它将要使用我们提取的参数,即参数化,本文我们称之为"用参采样器")。
        /upload/batchImport/merAdd/20141124/1 上传文件成功之后,服务器会返回 /batchImport/merAdd/20141124/1/201411201455.xls:



        JMeter GUI 视图中右击该采样器打开右键菜单 -> 添加 -> 后置处理器 -> 正则表达式提取器,打开"正则表达式提取器"会话页面并编辑其内容如下:



引用名称是 /merServPlat/merInfo/import/add.json 请求将要引用到的变量名;
正则表达式是提取你想要内容的正则表达式,小括号()表示提取,也就是说对于你想要提取的内容需要用它括起来;
模板是使用提取到的第几个值。因为可能有多个值匹配,所以要使用模板。从 1 开始匹配,依次类推。这里只有一个,所以填写 $1$ 即可;
匹配数字表示如何取值。0 代表随机取值,1 代表全部取值。这里只有一个,填 1 即可;
缺省值表示参数没有取到值的话,默认给它的值。一般不填。
        2. 用参采样器的参数化
        比如文件修改请求采样器 /merServPlat/merInfo/import/add.json 的请求是 /merServPlat/merInfo/import/add.json?file=%2FbatchImport%2FmerAdd%2F20141124%2F1%2F0000000.xls。
        中间带有的 %2F 是将 / 转义处理。我们只需要把第一步提取到的参数放进去即可:/merServPlat/merInfo/import/add.json?file=%2FbatchImport%2FmerAdd%2F20141124%2F1%2F${anycall}.xls



        3. 添加 Debug Sampler 以对正则提取器进行调试
        JMeter GUI 视图中右击 Thread Group 打开其右键菜单 -> 添加 -> Sampler -> Debug Sampler。

     使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter
properties,JMeter variables,System properties:



1)JMeter properties和System properties:通常都选false,这两个就是JMeter和系统的属性,在Jmeter的bin的jmeter.properties中定义,一般都不会变。

2)JMeter variables:这个是我们自已定义的变量,定义的方式有如下这些:

  a) 选中测试计划(Test plan),在右边的面板上添加User Defined Variables

  b) 选中线程组,右键选择 配置元件( config element)-->User Defined Variables

  c) 通过后置处理器生成的变量。


  d)使用csv参数化的变量。

这里用到的是通过后置处理器生成的变量,运行后可查看响应数据:



        4. 添加察看结果树以监听观测执行情况
        JMeter GUI 视图中右击 Thread Group 打开其右键菜单 -> 添加 -> 监听器 -> 察看结果树
        5. 执行线程组以调试验证正则提取器
        CTRL + R 执行线程组,察看结果树的相关报告如下。
        提参采样器 /upload/batchImport/merAdd/20141124/1 响应数据:



        用参采样器 /merServPlat/merInfo/import/add.json 的请求:



        Debug Sampler 的跟踪情况:



        证明我们的正则表达式提取参数成功。
        后记
        除了正则提取器,对于返回结果为 xml 或者 json 内容的请求,JMeter 分别有 XPath Extractor、JSON Path Extractor 等提取器进行提取。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐