t.me/atinfo_chat Telegram группа по автоматизации тестирования

Вложенные объекты json, тестирование api, как реализовать на Java?

api
json
java
Теги: #<Tag:0x00007f9c4a4dd0a8> #<Tag:0x00007f9c4a4dcf68> #<Tag:0x00007f9c4a4dce28>

(Gallagher) #1

В общем задача оттестить api …
Немного погуглив нашел пару вариантов:
вариант 1: (https://api.github.com/users/007) работает чудесно … Все что надо через геттеры можно достать

@Before
    public void setUp(){
        restTemplate = new RestTemplate();
    }

    @Test
    public void testUserInfo()throws IllegalAccessException{
        User user = restTemplate.getForObject(API_BASE + "/users/007", User.class);
        GithubData data = new GithubData();
        try {
            Assert.assertTrue("user.getAvatar_url().contains(data.avatar_url));
        } catch (AssertionError as) {
            as.printStackTrace();
        }

вариант 2 (https://bitpay.com/api/rates) тоже все супер, все доступно … данные через геттеры получаются нормально

@Test
    public void testUserInfo() {
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<List<TestTestRate>> rateResponse = restTemplate.exchange("https://bitpay.com/api/rates",
                HttpMethod.GET, null, new ParameterizedTypeReference<List<TestTestRate>>() {
                });
        List<TestTestRate> rates = rateResponse.getBody();
        for (TestTestRate ratew : rates)
            System.out.println(ratew.getName()); 
    }

Как с такими api работать? https://api.biblio-online.ru/api/v1/content/098F15F3-63DB-4011-9E6F-E5C081FAB666 там объекты вложенные …


(Сергей Слётов) #2

Первая ссылка в поиске (запрос “java json”):


#3

Ну зачем же, ведь это же такой кайф - получить ответ не в гугле, а на форуме =)


(Сергей Слётов) #4

Скорее всего человек не знает что такое json


(Viktor) #5

Почитайте его вопрос внимательнее. Он уже гуглил, и спрашивает конкретный вопрос на который не нашел ответ. Что за мода на наших форумах, кинуть колкое слово не дав никакого ответа. Форум для этого и есть чтобы мы общались и делились опытом друг с другом. И опыт у всех разный, гуглить то что нужно, тоже нужно уметь


#6

Вопрос относится к стандартной работе с JSON и не является чем-то “хитрым”. С каждым годом вопросы на форуме, к сожалению, все проще и проще - люди разучиваются получать информацию из открытых источников.


(Viktor) #7
  1. Это вам кажется не хитрым, автор поста начал автоматизировать пару месяцев назад. Вы сделайте пару презентаций для не Automation QA про автоматизацию, пообщайтесь с ними, тогда поймете о чем я.
  2. Каких открытых источников? Самые популярные Stackoverflow и Git forum построены на таком же принципе как и этот сайт и кто то, когда то, там тоже задал вопрос, который вы прочитали и на нем научились. На данный моменты вы просто дискредитируете данный форум.

(Gallagher) #10

По факту статья подкинутая S_e_rgej помогла в решении данного вопроса …
Решается задача следующим образом:

  1. Идем на http://www.jsonschema2pojo.org/ и генерируем наши java классы …
  2. Получаем данные и складываем в наши классы, доступ через геттеры
@Test
    public void tesеInfo() {
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
        headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
        Example example = restTemplate.getForObject("https://site.ru/api/v1/content/098F15F3-63DB-4011-9E6F-E5C081FAB666", Example.class);
        System.out.println(example.getLink());
    }

Готово! Теперь можно сравнить полученные данные…