Чтение CSV-файла преобразует его в JSON, но он принимает каждую строку в нем как строку в каратэ - PullRequest
3 голосов
/ 13 июня 2019

Я могу прочитать файл CSV и преобразовать его в JSON с помощью

def expectedResponse = read('classpath:somefile.csv')

Предположим, у меня есть файл CSV, как показано ниже

name,age
praveen,29
joseph,20

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

2.Как получить значение 20. Например, указав Джозефа, я хочу получить возраст.Я получил jsonpath как

get expectedResponse $.[?(@.member == '<name>')].age

Я получил имя из примеров.Так что я получаю это как Джозеф во время выполнения.Но я получаю ошибку как причина: не равно (целое число: JSONArray) .Он не возвращает только возраст (целочисленное значение)

Или есть лучший способ получить его?

1 Ответ

3 голосов
/ 13 июня 2019

Формат CSV не содержит никакой информации о типе, поэтому по умолчанию все имеет значение «string», и у вас есть для его преобразования. Но это легко, используя karate.map().

* text users =
"""
name,age
praveen,29
joseph,20
"""
* csv users = users
* match users == [{ name: 'praveen', age: '29' }, { name: 'joseph', age: '20' }]
* def fun = function(x){ x.age = ~~x.age; return x }
* def users = karate.map(users, fun)
* match users == [{ name: 'praveen', age: 29 }, { name: 'joseph', age: 20 }]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...