如果为null,则删除HTTP请求PATH变量

时间:2018-07-20 03:12:50

标签: jmeter

我在JMeter的PUT方法中有这个脚本, 如果输入数据中的值为空白,如何删除路径变量?

我知道如果参数可以使用remove Arguments放在HTTP请求的Parameter选项卡中,则可以删除它,原因是我在主体数据中有一个值,因此必须将URL参数放在路径中,这就是为什么删除参数不再起作用。

代码:

if ("${thisfromCSV}" == "") {
    sampler.getArguments().removeArgument("thisParameter");
}   

如果参数位于HTTP请求的“参数”标签中,则此方法有效

1 个答案:

答案 0 :(得分:0)

  1. JSR223 PreProcessor添加为您要修改的HTTP Request的子项
  2. 将以下代码放入“脚本”区域:

    def url = new URL("http://example.com" + sampler.getPath())
    
    def params = url.query.split('&').collectEntries({ param ->
        param.split('=').collect {
            URLDecoder.decode(it, 'UTF-8')
        }
    })
    
    if (vars.get('thisfromCSV') == '') {
        params.remove('thisParameter')
    }
    
    def query = params.collect { k, v -> "$k=$v" }.join('&')
    
    sampler.setPath(url.path + '?' + query)
    
  3. 就是这样,如果thisParameter变量为空,则代码将从采样器的URL查询字符串中删除thisfromCSV

有关在JMeter测试中使用Groovy脚本的更多信息,请参见Apache Groovy - Why and How You Should Use It