如何在Blazemeter中运行groovy脚本,从而尝试访问csv文件数据?

问题描述

我在groovy上有一些Jmeter脚本

1.upto(${amount_of_items},{ index ->
def data = new File('data/ids.csv').readLines().get(index).split(',') 
def attr = [:]
attr.put('id',data[0].toInteger()) 
def attributes = [:]
def param = [:]
param.put('quantity',${quantity})
param.put('status_id',4)
attributes.put('statuses',[param])
attributes.put('identity',attr)
adjustItems.add(attributes)
})

有什么解决方案可以访问我尝试从Blazemeter解析的csv吗?

def data = new File('data/ids.csv').readLines().get(index).split(',') 

我可以将csv上传到Blazemeter中的共享文件夹并在脚本中使用它吗?

解决方法

只要将文件上传到共享文件夹,在BlazeMeter中访问文件应该没有问题。有关更多详细信息,请参见Shared Folders文章。

也根据JSR223 Sampler documentation

JSR223测试元素具有可大大提高性能的功能(编译)。受益于此功能:

使用脚本文件而不是内联它们。如果ScriptEngine上有此功能,这将使JMeter对其进行编译并缓存它们。 或使用“脚本文本”,然后检查“缓存编译的脚本”(如果有)属性。

使用此功能时,请确保您的脚本代码不直接在脚本代码中使用JMeter变量或JMeter函数调用,因为缓存只会缓存第一次替换。而是使用脚本参数。

因此,我建议修改您的代码,以对JMeterVariables类实例使用vars速记,例如:

1.upto(vars.get('amount_of_items') as int,{ index ->
    def data = new File('data/ids.csv').readLines().get(index).split(',')
    def attr = [:]
    attr.put('id',data[0].toInteger())
    def attributes = [:]
    def param = [:]
    param.put('quantity',vars.get('quantity') as int)
    param.put('status_id',4)
    attributes.put('statuses',[param])
    attributes.put('identity',attr)
    adjustItems.add(attributes)
})