0

我正在尝试设置从 JSR223 Groovy Assertion 中的 Jmeter 属性中提取的 Jmeter 变量。

我感兴趣的 Jmeter 属性如下所示:

...
created_blob_A_6= fde65de0-3e32-11e8-a5b4-3906549016d8
created_blob_A_8= fef92d70-3e32-11e8-a5b4-3906549016d8
created_blob_A_9= ff775e20-3e32-11e8-bac3-e51250ffea15
created_blob_B_1= fd7302a0-3e32-11e8-a5b4-3906549016d8
created_blob_B_10= 00141350-3e33-11e8-bac3-e51250ffea15
...

为了从 Jmeter 属性中提取值,我创建了 JSR223 Groovy 以下断言脚本:

def readParamPrefix = 'created_blob'
def writeParamPrefix = 'blob_to_delete'
def chucnkTypes = 'A'..'E'
def newBlobCounter = 1

chucnkTypes.each{ chunkLetter ->
    (1..10).each{ streamNumber ->
        String readParamName = readParamPrefix + '_' + chunkLetter + '_' + streamNumber
        log.info('Read param name: ' + readParamName)
        String writeParamName = writeParamPrefix + '_' + newBlobCounter
        log.info('Write param name: ' + writeParamName)
        String blob_id_to_delete = props.get(readParamName).toString().trim()
        log.info('' + readParamName + ' => ' + writeParamName + ' (' + blob_id_to_delete + ')')
        vars.put(writeParamName.toString(), blob_id_to_delete.toString())
        newBlobCounter++
    }
}

该脚本不适用于 JMeter 变量,但适用于 JMeter 属性。以下是 JMeter 属性的样子:

JMeterProperties:
...
blob_to_delete_1=9b1c4f40-3e36-11e8-a5b4-3906549016d8
blob_to_delete_10=9da5e050-3e36-11e8-bac3-e51250ffea15
blob_to_delete_11=9b235420-3e36-11e8-bac3-e51250ffea15
blob_to_delete_50=9b656630-3e36-11e8-bac3-e51250ffea15

你能告诉我,如何修复我的代码以正确设置 JMeter 变量?

4

2 回答 2

0

不要在脚本中使用 ${varName},注意JSR223 最佳实践

确保脚本不使用任何使用 ${varName} 的变量,因为缓存仅采用 ${varName} 的第一个值。而是使用: vars.get("varName") 您也可以将它们作为参数传递给脚本并以这种方式使用它们。

更改后,如果仍然无法正常工作,请在日志中查找错误

于 2018-04-12T11:05:44.277 回答
0

我认为您的代码没有任何问题:

JMeter Groovy 变量

所以我会推荐:

JMeter 调试变量

于 2018-04-16T15:29:16.877 回答