2016-10-07 1 views
0

У меня есть ответ JSON в 1 запрос так:Как выполнить ответ json в 2 запросах?

{ "общий": 1, "страница": 1, "запись": 2, "строка": [{ "ID": 1034, «item_type_val»: «Бизнес Требование», «имя_поля»: «Назначено», «Недопустимое значение»: «Jmeter « Система »,« dep_value »:« "," dep_field ":" "}, {" id ": 1033 "item_type_val": "риск", "field_name": "Категория", "INVALID_VALUE": "Energy", "dep_value": "Записан Пользователь", "dep_field": "Назначено"}]}

и во втором запросе:

{"total": 1, "page": 1, "records": 2, "rows": [{"id": 1100, "item_type_val": "Business Требование", "field_name": "Assigned To "," invalid_value ":" Jmeter System "," dep_value ":" "," dep_field ":" "}, {" id ": 1111," item_type_val ":" Risk "," field_name ":" Category " "INVALID_VALUE": "Энергия", "dep_value": "Записан пользователя", "dep_field": "Назначено"}]}

Оба одинаковые, но разные идентификаторы. Мне нужно проверить 1-й ответ json от 2-го ответа json и сравнить оба они одинаковые или нет. здесь оба одинаковы, но имеют разные идентификаторы, которые должны быть приемлемыми. как я могу сделать это с помощью регулярных выражений, чтобы я мог игнорировать идентификатор и сопоставлять весь контент?

ответ

0

Не уверен, что если вы можете сделать это с помощью одного регулярного выражения, но другой выход есть вы можете создать карту его и затем сравнить все, кроме «ид»

+0

Спасибо за ответ.можете ли вы предложить, как я могу создать карту для нее в jmeter? –

0

Я считаю, что самый простой способ будет просто отбросить эти id записи, используя JSR223 PostProcessor и Groovy язык, который поставляется с JSON support

  1. Добавить JSR223 постпроцессор в детстве пробоотборника, который возвращает свой JSON
  2. Вставьте следующий код в JSR223 P ostProcessor в "Сценарий" Площадь

    import groovy.json.JsonBuilder 
    import groovy.json.JsonSlurper 
    
    def slurper = new JsonSlurper() 
    def jsonResponse = slurper.parseText(prev.getResponseDataAsString()) 
    jsonResponse.rows.findAll { it.remove("id") } 
    def newResponse = new JsonBuilder(jsonResponse).toPrettyString() 
    //depending on what you need 
    vars.put("responseWithoutId", newResponse) // store response withou ID into a JMeter Variable 
    prev.setResponseData(new String(newResponse)) // overwrite parent sampler response data 
    log.info(newResponse)       // just print the new value to jmeter.log file 
    

JSR223 JSON

Так у вас есть следующие варианты:

  1. vars.put("responseWithoutId", newResponse) - сохраняет новый JSON (без этих id) в ${responseWithoutId} JMeter переменных
  2. prev.setResponseData(new String(newResponse)) - после выполнения этой строки родительский элемент данные не вполне достаточные будут содержать «ID»
  3. log.info(newResponse) - просто печатает JSON без «ID» в jmeter.log файла

Я не знаю, ваш дизайн плана тестирования, лично я бы хранить ответы от 2 запроса в 2-х различных JMeter переменных, т.е. ${response1} и ${response2} использованием выше подхода и сравнить их с Response Assertion как:

Response Assertion