Jmeter中Vars.get()和${}引用的区别
在用Jmeter做接口测试的过程中,经常用到jsonpath提取部分返回值后用beanshell进行处理或者使用beanshell断言。发现虽然${}和vars.get()都是用来获取变量的方法,但是在beanshell中使用却有一些区别,具体区别如下。
一、使用范围
${}可以在Jmeter中的任何地方使用,包括HTTP请求中的参数、断言、前置处理器、后置处理器等。vars.get()只能在编写脚本时使用,它需要一个参数,即变量名。
二、返回值
${}和vars.get()返回值的区别在于,${}返回的是字符串类型,而vars.get()返回的是Object类型。实际使用中,如果返回值不包含"",使用${}和vars.get()没什么区别,但是如果返回值包含引号,使用${}后代码容易报错。
例如以下脚本
执行后vars.get("data")可正常打印值,${data}在查看结果数中可以看下其变量值,但是拼接后引号没有转义
三、修改变量值后当前脚本获取到的值不一样
修改变量值后vars.get("data")可在当前脚本直接获取到修改后的值,${}在当前文件获取到的还是修改前的值。后续文件才能获取到修改后的值。
以上内容只是在使用中发现的一些问题,欢迎指正和补充