我在JMeter、PUT方法中有这个脚本,如果输入数据中的值为空,如何删除路径变量?
我知道,如果参数在HTTP请求的"参数"选项卡中,我可以使用remove Arguments来删除它,问题是我在主体数据中有一个值,所以我必须将URL参数放在路径中,这就是为什么remove Arguments不再起作用的原因。
代码:
if ("${thisfromCSV}" == "") {
sampler.getArguments().removeArgument("thisParameter");
}
如果该参数位于HTTP请求的"参数"选项卡,则该操作有效
- 添加JSR223预处理器作为要修改的HTTP请求的子级
-
将以下代码放入"脚本"区域:
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)
-
就是这样,如果
thisfromCSV
变量为空,代码将从Sampler的URL查询字符串中删除thisParameter
。
有关在JMeter测试中使用Groovy脚本的更多信息,请参阅ApacheGroovy-Why and How You Should Use It。