首页 > 解决方案 > 如何在 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 中的共享文件夹并在脚本中使用它吗?

标签: csvgroovyjmeterblazemeter

解决方案


鉴于您将文件上传到共享文件夹,在 BlazeMeter 中访问您的文件应该没有问题。有关详细信息,请参阅共享文件夹文章。

同样根据JSR223 Sampler 文档

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)
})

推荐阅读