【问题标题】:Why JMeter varibles aren't set from JSR223 Groovy Assertion?为什么没有从 JSR223 Groovy Assertion 设置 JMeter 变量?
【发布时间】:2018-04-16 23:29:16
【问题描述】:

我正在尝试设置从 JSR223 Groovy 断言中的 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 变量?

【问题讨论】:

    标签: groovy jmeter jmeter-4.0


    【解决方案1】:

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

    所以我会推荐:

    【讨论】:

      【解决方案2】:

      不要在脚本中使用 ${varName},注意 JSR223 Best Practices

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

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

      【讨论】:

      • 我删除了变量名前的所有美元符号 ($),但没有帮助。此外,JMeter 日志中没有错误
      • @Eugene 你不应该删除 $ 符号,它应该转换为 vars.get("varName")
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多