как пропустить пустые значения в теле сообщения http в Jmeter при чтении данных из csv?

avatar
Ramesh Babu
8 августа 2021 в 16:59
94
1
-1

Ниже приведен пример моего тела в jmeter. Я попытался использовать предварительный процессор JSR223 с приведенным ниже кодом, но он удалил пустые значения только для первой строки csv. Как удалить все пустые значения из моего CSV-файла? что я здесь делаю не так? Любая помощь приветствуется.

**[def request = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
def newRequest = evaluate(request.inspect())
request.each { entry ->
    if (entry.getValue().equals('')) {
        newRequest.remove(entry.getKey())
    }
}
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', new groovy.json.JsonBuilder(newRequest).toPrettyString(), '')
sampler.setPostBodyRaw(true)][1]**

http-тело: {

"number": "${number}",
"marker": "${market}",
"description": "${description}"

Источник
Mohamed Raza
8 августа 2021 в 17:24
0

Отвечает ли это на ваш вопрос? Пропускать пустые строки из CSV с помощью конфигурации JMeter Csv

Ramesh Babu
18 августа 2021 в 21:11
0

Нет. Мое требование состояло в том, чтобы пропустить отправку пустых полей. В CSV-файле нет пустых строк.

Ответы (1)

avatar
Dmitri T
9 августа 2021 в 07:35
0

Если у вас более 1 итерации в Группе потоков или Контроллере цикла, вам необходимо пересмотреть свой подход к удалению и добавлению тела запроса.

Предлагаемое изменение кода:

def data = new org.apache.jmeter.config.Arguments()
def request = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
def newRequest = evaluate(request.inspect())
request.each { entry ->
    if (entry.getValue().equals('')) {
        newRequest.remove(entry.getKey())
    }
}
def body = new org.apache.jmeter.protocol.http.util.HTTPArgument('', new groovy.json.JsonBuilder(newRequest).toPrettyString(), '', false)
body.setAlwaysEncoded(false)
data.addArgument(body)
sampler.setArguments(data)

Дополнительная информация: