我如何在jmeter中使用beanshell预处理器删除空参数 [英] How do i remove empty parameter using beanshell preprocessor in jmeter

查看:256
本文介绍了我如何在jmeter中使用beanshell预处理器删除空参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试读取包含500多个行的csv文件,并且每行将作为对API的请求.现在我的问题是某些参数具有空字符串,我想设置一个条件,以防万一如果参数返回空字符串,则在点击API之前先从请求主体中删除该参数

I am trying to read a csv file that contains more that 500+ rows and each row will serve as request to API. Now my problem is that some of the parameters have empty string and i would like to set up a condition in case if parameter returns empty string then remove that parameter from request body upfront before hitting the API

下面是我的json

{
  "body": {
    "Id1": "${Id1}",
    "addressId": "${addressId}",
    "languageCode": "${languageCode}",
    "tempId": "${tempId}"
}

现在,在读取csv之后,我在请求正文中得到以下值

Now after reading csv i get following values in my request body

{
  "body": {
    "Id1": "1",
    "addressId": "1233",
    "languageCode": "E",
    "tempId": ""
}

您可以看到tempId具有空字符串.现在使用bean-shell预处理程序,我正在尝试删除它,但是没有运气

As you can see tempId has empty string. Now using bean-shell preprocessor i am trying to remove this but no luck

Object requestBody = sampler.getArguments().getArgument(0).getValue();

if (requestBody.get("tempId").equals("")){
    sampler.getArguments.removeArgument("tempId");
}

当我查看结果树时,我看不到tempId从请求中删除.我将不胜感激

when i look into result tree i don't see tempId being deleted from the request. I would appreciate any help

推荐答案

避免使用Beanshell弃用和降低性能.

Avoid using Beanshell for deprecation and bad performance.

使用 groovy 代替,并使用以下代码:

Use groovy instead with this code:

import org.apache.jmeter.config.Arguments;
def request = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
def newRequest = evaluate(request.inspect())
request.body.each { entry ->
    if (entry.getValue().equals('')) {
        newRequest.body.remove(entry.getKey())
    }
}
def arguments = new Arguments();
sampler.setArguments(arguments);
sampler.addNonEncodedArgument('', new groovy.json.JsonBuilder(newRequest), '')
sampler.setPostBodyRaw(true)

请参阅:

  • JsonSlurper
  • JsonBuilder

如果您想正确学习jmeter,请参阅这本本书将为您提供帮助.

If you're looking to learn jmeter correctly, this book will help you.

这篇关于我如何在jmeter中使用beanshell预处理器删除空参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆