jmeter跨线程组传值

需求背景:1.采购登陆,创建订单;2.供应登陆,确认该订单。所以这里就会涉及到1中生成的订单号需要传递到2中。

需求实现:用jmeter进行1,2的自动化;1,2分成了2个不同的线程组,所以这里就需要跨线程组传递订单号。

跨线程组传值:

1.创建订单后先获取生成的订单号:

创建订单成功的返回如下:

{"Success":true,"Message":null,"Data":[{"SOSNo":"10009004","Price":19999999.98000,"PayMethod":"线下支付","ShoppingCartMasterNo":10009004,"AduitChoiceStatus":30,"OrderSource":3,"ParentSOSysNo":10009004}],"Code":0}

实现:创建订单请求上,添加jp@gc - JSON/YAML Path Extractor提取创建订单成功后返回的订单号,如下:

 

 

 

 

 

 

2.还是在该请求中,加后置处理器BeanShell PostProcessor;

3.在该后置处理器中,编写脚本:

 

 

 4.在测试计划上添加前置处理器BeanShell PreProcessor:

 

 

 5.前置处理器中编写脚本:

 

 

 6.引用newsosysno值,看是否成功跨线程组传递:

 

 PS:为了让每个线程组顺序执行,需要在测试计划中勾上独立运行每个线程组。

 

遇到的问题如下:

在2确认订单的时候,一直报错,查看请求,看到订单号并没有正确传递过来,还是参数的形式:

{"SOSysNo":${newsosysno},"OptType":20,"Note":"确认订单"}

 

打开log(工具栏Options->Log Viewer),查看报错如下:

2019-11-26 16:23:49,150 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``string sosysno=bsh.args[0]; print(sosysno); ${_setProperty(newsosysno,${sosyno}, . . . '' : Typed variable declaration : Class: string not found in namespace

 

 

 原因:string写法的问题。应该写String,不是string。。。。修改后,成功了!

 

 

 

posted @ 2019-11-26 19:22  大师的修炼之路  阅读(302)  评论(0编辑  收藏  举报