Проверьте несколько параметров в JSON Response для указанного диапазона значений - PullRequest
0 голосов
/ 13 марта 2019

Используя JSON Extractor, мне удалось получить следующий фрагмент данных, который мне нужен для получения полного ответа JSON. Теперь мне нужно проверить каждое поле для диапазона значений, например. ANNUALINCOME должен быть между, например, например. 1 - 10 л / год, 18 - 30 лет и ОБРАЗОВАНИЕ может быть B.A, B.Sc. или B.Com

{
:   "ID":"M12345",
:   "EDUCATION":"B.A.",
:   "ANNUALINCOME":"5 - 6 L\/annum",
:   "AGE":"29"
}

mid_10=
{
:   "ID":"M12346",
:   "EDUCATION":"B.Sc.",
:   "ANNUALINCOME":"1 - 2 L\/annum",
:   "AGE":"24"
}

mid_11=
{
:   "ID":"M12347",
:   "EDUCATION":"B.Com.",
:   "ANNUALINCOME":"5 - 6 L\/annum",
:   "AGE":"27"
}

Должен ли я использовать здесь ответное утверждение? Мне также нужно проверить, какие ID переданы, а какие нет. В идеале я должен получить ошибочный ID, даже если я не получил пропущенные.

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 13 марта 2019

Ваши критерии принятия слишком конкретны, поэтому вы не сможете использовать Подтверждение ответа.

Вам придется перейти на утверждение JSR223 и Groovy-скриптинг , пример кода подтверждения будет выглядеть примерно так:

def response = new groovy.json.JsonSlurper().parse(prev.getResponseData())

def income = response.ANNUALINCOME

def lowerBound = (income =~ "(\\d+)")[0][1] as int
def upperBound = (income =~ "(\\d+)")[1][1] as int
def average = (lowerBound + upperBound) / 2
def acceptableIncomeRange = 1..10
if (!acceptableIncomeRange.contains(average)) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage('Annual income is not within the acceptable range: ' + income)
}

def acceptableAgeRange = 18..30
def age = response.AGE as int

if (!acceptableAgeRange.contains(age)) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage('Age is not within the acceptable range: ' + age)
}

def acceptableEducations = ['B.A.', 'B.Sc.', 'B.Com']
def education = response.EDUCATION

if (!acceptableEducations.contains(education)) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage('Education is not within the acceptable range: ' + education)
}

Ссылки:

...