Ребят в связи с тем, что у многих возникают ошибки компиляции, нужно дополнительно установить библиотеку Jackson DataBind и создавать пустые конструкторы в Pojo классах. У меня такой ошибки нет, потому что в проекте установлен Selenide, а в нем уже встроен этот функционал Ошибка: java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of UserData (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) Ошибка: Cannot deserialize object because no JSON deserializer found in classpath.
Сначала решил проблему (подтянул все твои библиотеки, и отключал по одной что-бы оставить только нужные), а потом почитал коммент) Не люблю я простые решения))
Сделал, как рекомендуете, всё равно была ошибка (дошёл до 40 минуты +/- видео). Полез в документацию Jackson - там почитал. Потом пролистал вниз и читал все комменты и нашёл совет добавить Геттеры и Сеттеры. В итоге добавил библиотеку lombok к проекту + аннотации перед POJO-Классами @Getter @Setter и заработали тесты) Возможно я пропустил / не расслышал такую инфу в видео, что нужно добавлять и их тоже (Геттеры/Сеттеры).
2 замечания. Первое - в начале видео когда добавляете rest-ashured в pom отображения того самого значка обновления не видно потому что на его месте месте ваше прекрасное лицо. Второе - не имейте привычки оставлять в видео то как вы едите/пьете это во первых не эстетично выглядит во вторых лично мне не приятно и не интересно что вы там пьете или едите. P.S. не упрОщённый вариант а упрощЁнный
Очень классный урок. С нуля очень доходчиво объяснил, всё встало на свои места. Особенно понравились примеры реальных ситуаций тестирования функционала. Много смысла унёс от твоей работы со стримами. Но хотелось бы ещё руку набить.
Было бы интересно посмотреть как написать полноценный фреймворк для апи тестирования. Как правильно все по пакетам разложить, как создать какой-то универсальный реквест метод, чтобы не писать каждый раз given() и тд. Большое спасибо, очень помог!
по-моему них.рена непонятно. особенно с 16 минуты. Представим, что мы остались 1 на 1 с компьютером и какие команды мы должны писать? тупо копировать автора? или надо другие методы использовать....
молодец. Тебе надо курсы платные преподавать. Очень здорово объясняешь ребята, если у кого то после добавления users.forEach(x->Assert.assertTrue(x.getAvatar().contains(x.getId().toString()))); и попытки запустить, выводит ошибку от jackson "java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `api.UserData` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)" Это значит, что нужно добавить пустой конструктор в класс UserData. После конструктора с параметрами public UserData(Integer id, String email, String first_name, String last_name, String avatar) добавьте public UserData(){} и всё заработает. Почему в видео работает без дефолтного конструктора - не понятно
Спасибо за это видео, и в целом за то что делишься своими знаниями!) Вопрос - будет ли какое нибудь видео с автотестами апи, где ты уделяешь тому как проходить авторизацию, то есть использование токентов и разных методов в автотестах. Спасибо ;)
Спасибо, завтра собес на мидла, а я в основном в кукумбере+ геркин тесты писал, на готовых шагах, изредко их изменяя. Твои уроки ёмкие и весьма помогли разобраться с написанием шагов под бэк. Фронт я собственно уже умею, поэтому усвоился урок легко, всё вполне аналогично
1:05:30 количество символов после точки может получиться и больше 5, и меньше 5. Поэтому я предлагаю такую регулярку: String regex = "\\..*$"; Это выражение найдет точку и вместе с ней выберет все символы до конца строки. А т.к точка в данном формате времени/даты одна, то не должно быть плавающих багов.
Спасибо, благодаря твоему комментарию у меня получилось выровнять формат времени, но у меня почему-то все равно тест падает из за несовпадения актуального и фактического результата и всегда отличие 2 минуты
Огромное благодарю! Очень полезно! Через два месяца буду Junior QA Automation, сейчас middle+ на большом проекте, но уйду в автоматизацию и посижу два месяца на джаве.
Спасибо тебе за твои видео, они реально очень информативны и понятны. Если есть возможность, сделай видос про Cyprees и использование в нем GraphQL. Спасибо тебе, не останавливайся!!!
Для тех, у кого ругается последний тест: нужно создать вторую переменную regex1 и применить ее к currentTime, так как у меня например в currentTIme 11 символов пришлось убирать
Автор, ты везде создаешь конструкторы используя библиотеку Jacson для работы с json. (ИМХО GSON лучше). Но джексон не умеет нормально с ними (конструкторами) работать без аннотаций JsonProperty и JsonAutoDetect. У новичков будет много проблем и падающие тесты. И для решения надо пометить все аннотациями или сделать дополнительно пустой конструктор. Чисто мимолетом глянул ролик, может потом об этом говорилось. Если так, то сорян :) Ну и идеи на будущие видосы, не приучай новичков все параметры хранить в классе с тестами. Есть те же енамчики..хотя бы туда скидывать ошибки, почты и тп. И вызывать их через USER.EMAIL. Когда вся дата в одном месте за ней проще уследить. А не бегать в каждом тесте менять на новую почту после апдейта разрабами.
21:15 контейнс тут не подходит, если айди 1 а аватар с индексом 11, то проверка будет пройдена, но это не корректно, там через регулярку бы 25:25 Второй пример можно через консумер сделать, в консумере извлечь что нужно и сделать ассерты
16:36 тело обязательно извлекать? Я пробовал без body() - всё работает. body() же в разных местах цепочки можно вызывать. В body() до вызова extract() указывается условие для проверки, которое мы хотим проверить в ответе, правильно? А для чего вызывается body() после extract(), если и без него всё работает? Если в этом месте у body() указать условие, то оно подчёркивается красным, в этом месте у body стоит expected 0 arguments.
Олег, привет! Большое спасибо за качественный контетн! Если не трудно, можешь подсказать, как быть, если изначально для POST запроса у нас есть огромный json объект? Как быть в таком случае? Какой способ лучше использовать для создания запроса?
И добавлю, что курсов по Java очень много, есть и очень качественные. Разве что углубленное что-то, с нуля не думаю что актуально. Или что-то вроде решение каких-либо практических заданий.
Олег, спасибо за контент, я понимаю почему так много внимания уделяется java, но фокус уводится от библиотеки playwright.Если будут силы было бы круто увидеть контент по этой теме.
Привет, спасибо за воркшоп, очень полезно. Хотел бы попросить снять следующе видео в котором ты бы рассказал как правильно строить архитектуру тестов (какие директории создавать), где и как хранить Bearer token. Ещё было бы круто если это все крутилось на gradle.
Подскажи, пожалуйста, почему не используешь проверки самого rest assured, а используешь Assert. К примеру asserEquals можно заменить на equalTo, assetNotNull - на .body("$", notNullValue() и т.д.
Привет. Как ты учился использовать Rest Assured? В официальной документации метод jsonPath используется всего в двух местах и несколько иначе, чем ты показываешь в видео. У тебя всё выглядит логичнее, чем в доке.
@@threadqa а как понимаешь, что за чем должно идти? Как научиться пользоваться фреймворком без документации? И как ты понял, что удобнее сделать файл спецификации и pojo-классы?
Спасибо, интересненько). У меня не парсился json пока не прописал gson в pom.xml. Не подскажешь почему я не могу запустить тест через дебагер? Постоянно Exception in thread "main"
Такой вопрос - когда мы пишем jsonPath в методе jsonPath().getList библиотеки Rest Assured, то путь к блоку data будет просто "data": jsonPath().getList ("data", UserData.class), а в методе read библиотеки jayway.jsonpath путь (jsonPath) к блоку data будет read("$.data"). Получается, jsonPath пишется не универсально, как, например, xpath, а для каждой библиотеки по-своему?
Всем привет, все получается, но не понимаю как в SINGLE USER (/api/users/2) достать значения чисто из "data". Получается, если создавать класс root, data and support и уже потом извлекать значения из "data". А можно как-то обойтись ТОЛЬКО созданием класса с переменными для "data" без root и support? В самом первом примере автор так сделал, только там был список "data", а у меня только один UPD: забавно, что через минуту догадался) SingleUser response = UserMethods.getUser().then().extract().jsonPath().getObject("data", SingleUser.class); в итоге для такого json нужен getObject("путь", класс для определения переменных);
Сделал все, как ты показал в видео, но почему то на примере с 18 минуты выдало ошибку "java.lang.IllegalStateException: Cannot deserialize object because no JSON deserializer found in classpath. Please put Jackson (Databind), Gson, Jackson, or Yasson in the classpath." Не подскажешь с чем может быть она связанна? Не понравился ему класс UserData я как понял, но не понял почему
@@threadqa Олег, а как идея сама понимает, что нужно использовать эту зависимость? Ведь никаких импортов пакетов в тестовом классе мы не делаем (и в pojo-классе тоже!), и не создаём условный Gson gson = new Gson(); ?
@@threadqa добавила библиотеку, теперь такая ошибка java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `api.UserData` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
Всё хорошо, но названия полей класса лучше всё же делать по code convention, а то, что не матчится с JSON полями, так это легко исправляется аннотациями.
Если кто то залез в комментарии ,чтоб посмотреть почему тест выдает ошибку и уже сломал голову не может понять в чем дело( как это было у меня) Попробуйте мой способ: создавайте в каждом классе дополнительно по пустому конструктору и все переменные класса я сделал публичными. Все работает на ура)
Жаль застопорился в самом начале) Вылезает io.restassured.path.json.exception.JsonPathException: Failed to parse the JSON document, все делал как в уроке и доп. библиотеки установил, не работает ((
вопрос. А если мне нужен будет не только содержащийся массив "data", а еще и те данные, которые помимо него есть. Что мне при этом нужно строку с extract написать?
@@threadqa а ClassName должен при этом быть с тремя вложенными классами, как POJO выдает? Типа public class ClassName{ class Datum{} class Root{} class Support{} }
НЕ могу понять, почему выводит ошибку: io.restassured.path.json.exception.JsonPathException: Failed to parse the JSON document Хотя всё делаю точь-в-точь
У меня вообще всё не так (как обычно), жаль скрин не приложить. Парка java не зеленая, нет возможности создать Packege, вместо создания класса - создание java class diagram, файл формата java тоже нет возможности создавать, только просто файл и вручную задавать формат. Про то как всё происходит в RegresTest я вообще молчу( Не понимаю почему так( Но рассказываете очень понятно, спасибо.
Спасибо за видео, очень помогло. По Вашему мануалу все получилось, но у меня по моему тесту есть вот такая проблема.. мне в body надо передать такое "headers":{"accept":"application/json","WAREHOUSE-TEST":"1"}, и вот куда бы я его не писал, и в поджо класс запроса и в сабо body теста и в спеку везде отдает одну и ту же ошибку error": { "message": "Validation error.", "additional": { "fieldName": "WAREHOUSE-TEST", "message": "Header parameter is not passed.", "bindings": [ Помогите плиз что я не так делаю( Если я запрос передаю весь стрингой тогда проходит все без ошибок и ответ правильный. Заранее спасибо.
@@threadqa Привет, забыл отписать, там как раз в заголовке и не подходило надо было именно в бади передать. Но в итоге проблема была в том что я не правильно импорт подтянул для @JsonProperty и поэтому не видело имени которое я присваивал. Сделал все с нуля и все заработало. Спасибо большое за Ваши уроки.
учусь автоматизировать, еще мало понимаю, делаю все в точности как в ролике, как указано в 18 минуте видео запускаю ReqresTest но в консоли вылазит ошибка E:\Auto learning\Auto 1\src\test\java\API\ReqresTest.java:12:5 java: illegal start of expression и что дальше делать не знаю(
@@threadqa Да спасибо, на тот момент я только начал обучение и просто забыл ; поставить). Теперь стоит задача сделать синхронный тест с 2 запросами, где для 2-го запроса будет использоваться тело ответа из первого запроса. Буду благодарен если подскажешь в каком видео можно это подсмотреть (с меня лайки и комменты)
спасибо за видео.Но валится эта ошибка Cannot deserialize object because no JSON deserializer found in classpath. Please put Jackson (Databind), Gson, Jackson, or Yasson in the classpath
вот что раздражает в видео по АТ, то что они быстро усторевают, дольше сидишь копаешься, в том что, что-то вырезали или надо какие-то зависимости тянуть что бы все работало ...
Вместо регулярного выражения, можно использовать метод substring() Например: String currentTime = Clock.systemUTC().instant().toString().substring(0,15); String responseTime = userTimeResponse.getUpdatedAt().substring(0,15);
Ребят в связи с тем, что у многих возникают ошибки компиляции, нужно дополнительно установить библиотеку Jackson DataBind и создавать пустые конструкторы в Pojo классах. У меня такой ошибки нет, потому что в проекте установлен Selenide, а в нем уже встроен этот функционал
Ошибка: java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of UserData (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
Ошибка: Cannot deserialize object because no JSON deserializer found in classpath.
Сначала решил проблему (подтянул все твои библиотеки, и отключал по одной что-бы оставить только нужные), а потом почитал коммент)
Не люблю я простые решения))
решается добавлением jackson-databind и принудительным проставлением @JsonCreator @JsonProperty анотаций
@@aleksandrivanov156 ты не одинок)
Сделал, как рекомендуете, всё равно была ошибка (дошёл до 40 минуты +/- видео). Полез в документацию Jackson - там почитал. Потом пролистал вниз и читал все комменты и нашёл совет добавить Геттеры и Сеттеры. В итоге добавил библиотеку lombok к проекту + аннотации перед POJO-Классами @Getter @Setter и заработали тесты) Возможно я пропустил / не расслышал такую инфу в видео, что нужно добавлять и их тоже (Геттеры/Сеттеры).
2 замечания. Первое - в начале видео когда добавляете rest-ashured в pom отображения того самого значка обновления не видно потому что на его месте месте ваше прекрасное лицо. Второе - не имейте привычки оставлять в видео то как вы едите/пьете это во первых не эстетично выглядит во вторых лично мне не приятно и не интересно что вы там пьете или едите.
P.S. не упрОщённый вариант а упрощЁнный
Кайф! Спасибо за полезнейший контент 🙌 Наконец-то RA, API тесты, да ещё и на русском, да простят меня индусы 😁
Супер видео! Пожалуйста, продолжай снимать. Было б круто увидеть серию видео о разработке целого фреймворка для авто тестов.
Огромное спасибо. Идея с курсом - отличная. Все объясняется в очень доходчивой форме, никаких вопросов не возникает.
Очень классный урок. С нуля очень доходчиво объяснил, всё встало на свои места. Особенно понравились примеры реальных ситуаций тестирования функционала. Много смысла унёс от твоей работы со стримами. Но хотелось бы ещё руку набить.
Было бы интересно посмотреть как написать полноценный фреймворк для апи тестирования. Как правильно все по пакетам разложить, как создать какой-то универсальный реквест метод, чтобы не писать каждый раз given() и тд. Большое спасибо, очень помог!
Классно объясняешь! Очень приятно смотреть твои видео.
Огромное спасибо, за полезный контент. Долго искал материал по RA, но не думал, что попадется такой, после которого не останется вопросов.
как можно поставить тысячи лайков разом?) Спасибо большое! Очень полезный материал, рада, что увидела.
ТС - мега-круто! Все разжевано от и до! Большое спасибо за сам материал, и отдельное спасибо - за его такую подачу!
по-моему них.рена непонятно. особенно с 16 минуты. Представим, что мы остались 1 на 1 с компьютером и какие команды мы должны писать? тупо копировать автора? или надо другие методы использовать....
молодец. Тебе надо курсы платные преподавать. Очень здорово объясняешь
ребята, если у кого то после добавления users.forEach(x->Assert.assertTrue(x.getAvatar().contains(x.getId().toString()))); и попытки запустить, выводит ошибку от jackson "java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `api.UserData` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)"
Это значит, что нужно добавить пустой конструктор в класс UserData.
После конструктора с параметрами public UserData(Integer id, String email, String first_name, String last_name, String avatar) добавьте public UserData(){} и всё заработает. Почему в видео работает без дефолтного конструктора - не понятно
тоже не понял почему в видосе без пустого работает
Спасибо за видео , очень доступно описано и показано!
Спасибо за это видео, и в целом за то что делишься своими знаниями!)
Вопрос - будет ли какое нибудь видео с автотестами апи, где ты уделяешь тому как проходить авторизацию, то есть использование токентов и разных методов в автотестах.
Спасибо ;)
Комменты можно прямо с каналов индусов копипастить :)
Спасибо! Прекрасно разъяснено! И работает сразу. Очень полезный тутор.
Супер целый час, кайфффф!! Главное продолжай , уверен что соберешь аудиторию ! ps. продолжаю ждать видосик по pom хотя бы 20 минутный ))
спасибо)
попозже засниму про него)
Мимишность подачи зашкаливает)
Спасибо, завтра собес на мидла, а я в основном в кукумбере+ геркин тесты писал, на готовых шагах, изредко их изменяя. Твои уроки ёмкие и весьма помогли разобраться с написанием шагов под бэк. Фронт я собственно уже умею, поэтому усвоился урок легко, всё вполне аналогично
1:05:30 количество символов после точки может получиться и больше 5, и меньше 5.
Поэтому я предлагаю такую регулярку: String regex = "\\..*$";
Это выражение найдет точку и вместе с ней выберет все символы до конца строки. А т.к точка в данном формате времени/даты одна, то не должно быть плавающих багов.
Вот, например, сколько символов может быть после точки:
2022-10-18T11:19:41 *_.892960400Z_*
2022-10-18T11:21:26. *_995Z_*
Спасибо, очень помог твой комментарий !
Спасибо, благодаря твоему комментарию у меня получилось выровнять формат времени, но у меня почему-то все равно тест падает из за несовпадения актуального и фактического результата и всегда отличие 2 минуты
(.{3}\..*)$ что бы наверняка.
@@СергейЛомако-ю5р Спасибо!
Огромное благодарю! Очень полезно! Через два месяца буду Junior QA Automation, сейчас middle+ на большом проекте, но уйду в автоматизацию и посижу два месяца на джаве.
И как ?
спасибо, сделайте еще видео с наиболее используемыми тестами API
Спасибо за качественный контент! В Рунете очень мало информации по Rest Assured
Да прибудет с тобой сила!
Спасибо большое!
Огромное вам спасибо, очень четко и ясно объяснили такую сложную тему.
Очень классно! Все подробно и по делу! Желаю успехов каналу!
Спасибо)
Огонь, и тут комментарий в поддержку, самый полезный контент по автоматизации на ютубе.
Ты крутой! Не забрасывай канал! Отлично объясняешь!
Спасибо дружище! подача на отлично. Респект!
Спасибо тебе за твои видео, они реально очень информативны и понятны. Если есть возможность, сделай видос про Cyprees и использование в нем GraphQL. Спасибо тебе, не останавливайся!!!
спасибо большое! оч полезно и информативно!
Классно ведёшь урок, респект!
Для тех, у кого ругается последний тест: нужно создать вторую переменную regex1 и применить ее к currentTime, так как у меня например в currentTIme 11 символов пришлось убирать
Спасибо за видос, ждем продолжения)
Суперпонятно все рассказал!) Спасибо!
Спасибо, тебя приятно слушать, продолжай.
Привет! Подскажи пожалуйста алгоритм действий, когда в ресте дополнительно нужно прокидывать куки (токен авторизации, например)
Спасибо за отличный контент
Огонь ждём ещё
Спасибо за видос, очень качественно и без воды.
Спасибо за видео!!!
Хороший трюк со стаканом))) но надо было после приветствия, типа здрасти бла бла - глоток - а теперь начнем))
Спасибо, отличная обучалка.
Спасибо за видеоурок. Очень доходчиво и понятно. Подписаться)
Спасибо за Ваш труд! Коммент в поддержку канала
Отличный Пивозавр !
Спасибо за урок!
Автор, ты везде создаешь конструкторы используя библиотеку Jacson для работы с json. (ИМХО GSON лучше). Но джексон не умеет нормально с ними (конструкторами) работать без аннотаций JsonProperty и JsonAutoDetect.
У новичков будет много проблем и падающие тесты. И для решения надо пометить все аннотациями или сделать дополнительно пустой конструктор.
Чисто мимолетом глянул ролик, может потом об этом говорилось. Если так, то сорян :)
Ну и идеи на будущие видосы, не приучай новичков все параметры хранить в классе с тестами. Есть те же енамчики..хотя бы туда скидывать ошибки, почты и тп. И вызывать их через USER.EMAIL.
Когда вся дата в одном месте за ней проще уследить. А не бегать в каждом тесте менять на новую почту после апдейта разрабами.
Ты лучший, GSON вылечил
@@Roch3z))рад, что помог мой коммент))
Лучший!
Отличный курс молодого бойца по Rest Assured 👍👍
суперспасибо! то, что искала
спасибо за видео, очень понятно рассказываешь
а будет видео еще с тест кейсами для rest assured?
видео будет, разберу как без pojo классов работать с ответом сервера
кажется мы с тобой в одном чате Ланит)) столько уже посмотрел уроков на эту тему, этот один из лучших
@@fromthegreatunknown блин внатуре)))
Спасибо за работу, полезное видео!
молодец парень!
очень доступно
Добрый день. Запишите свой курс по чему угодно))) выложите на любом платном ресурсе. Я куплю!!!) Вам бы преподавать. Видео потрясающие
Спасибо большое за контент!
Автор Красавчик, круто все разобрал по полкам, однозначно лайк, хотелось бы побольше уроков по сиай
18:52 в консоль выводит, но лист пустой. ошибка на .getList. Если у кого так, нужно в классе сделать пустой конструктор
спасибо что ты есть)
красавчик
21:15 контейнс тут не подходит, если айди 1 а аватар с индексом 11, то проверка будет пройдена, но это не корректно, там через регулярку бы
25:25 Второй пример можно через консумер сделать, в консумере извлечь что нужно и сделать ассерты
16:36 тело обязательно извлекать? Я пробовал без body() - всё работает. body() же в разных местах цепочки можно вызывать. В body() до вызова extract() указывается условие для проверки, которое мы хотим проверить в ответе, правильно? А для чего вызывается body() после extract(), если и без него всё работает? Если в этом месте у body() указать условие, то оно подчёркивается красным, в этом месте у body стоит expected 0 arguments.
Супер. Скиньте ссылку на 2 видео и если есть курс по Java, то тоже. Спс
Нужно ли использовать специальные библиотеки для JSON типа GSON или Jackson? RA видимо и так успешно сериализует и десериализует объекты.
привет, нужно Jackson устанавливать отдельно, но если есть Selenide в проекте, то дополнительно ничего не нужно
@@threadqa понял, спасибо
Олег, привет! Большое спасибо за качественный контетн! Если не трудно, можешь подсказать, как быть, если изначально для POST запроса у нас есть огромный json объект? Как быть в таком случае? Какой способ лучше использовать для создания запроса?
Видео понравилось спасибо. По самой джаве ничего не планируешь показать?))
А если сайт будет не в свободном доступе, а нужна будет авторизация? например используя Token, как это можно сделать?
И добавлю, что курсов по Java очень много, есть и очень качественные. Разве что углубленное что-то, с нуля не думаю что актуально. Или что-то вроде решение каких-либо практических заданий.
Bolishoe spasibo!
Олег, спасибо за контент, я понимаю почему так много внимания уделяется java, но фокус уводится от библиотеки playwright.Если будут силы было бы круто увидеть контент по этой теме.
Привет, спасибо за воркшоп, очень полезно. Хотел бы попросить снять следующе видео в котором ты бы рассказал как правильно строить архитектуру тестов (какие директории создавать), где и как хранить Bearer token. Ещё было бы круто если это все крутилось на gradle.
Подскажи, пожалуйста, почему не используешь проверки самого rest assured, а используешь Assert. К примеру asserEquals можно заменить на equalTo, assetNotNull - на .body("$", notNullValue() и т.д.
привет! у меня на канале есть вторая часть видео про Rest Assured, там я показал как делать проверки прямо в Rest Assured)
Однозначно Лайк + Подписка! Продолжай в том же духе! Не хватило только авторизации. Но за весь труд 10/10!
почему то когда добавляешь пустые конструкторы, у меня ошибки уходят
шикарный видос
Привет. Как ты учился использовать Rest Assured? В официальной документации метод jsonPath используется всего в двух местах и несколько иначе, чем ты показываешь в видео. У тебя всё выглядит логичнее, чем в доке.
привет, я без документации делал
просто интуитивно по названию метода)
@@threadqa а как понимаешь, что за чем должно идти? Как научиться пользоваться фреймворком без документации? И как ты понял, что удобнее сделать файл спецификации и pojo-классы?
Добрый день, автор! Могли бы вы предоставить все зависимости из вашего проекта?
Какую библиотеку изучать для автоматизации api на c#?
Спасибо, интересненько). У меня не парсился json пока не прописал gson в pom.xml. Не подскажешь почему я не могу запустить тест через дебагер? Постоянно Exception in thread "main"
Такой вопрос - когда мы пишем jsonPath в методе jsonPath().getList библиотеки Rest Assured, то путь к блоку data будет просто "data": jsonPath().getList ("data", UserData.class), а в методе read библиотеки jayway.jsonpath путь (jsonPath) к блоку data будет read("$.data"). Получается, jsonPath пишется не универсально, как, например, xpath, а для каждой библиотеки по-своему?
Подскажите какие dependencies у вас кроме rest-assured
Вопрос, зачем, для тестирования апи (если это не юнит тесты) использовать что-либо кроме постмана?
Привет, кодом можно гораздо больше сделать чем через постман)
Всем привет, все получается, но не понимаю как в SINGLE USER (/api/users/2) достать значения чисто из "data". Получается, если создавать класс root, data and support и уже потом извлекать значения из "data". А можно как-то обойтись ТОЛЬКО созданием класса с переменными для "data" без root и support? В самом первом примере автор так сделал, только там был список "data", а у меня только один
UPD: забавно, что через минуту догадался)
SingleUser response = UserMethods.getUser().then().extract().jsonPath().getObject("data", SingleUser.class);
в итоге для такого json нужен getObject("путь", класс для определения переменных);
Сделал по примеру как в видео в итоге при запуске с руки тест отрабатывает. А если через mvn clean test то почему то приходит пустой джисон.
Сделал все, как ты показал в видео, но почему то на примере с 18 минуты выдало ошибку
"java.lang.IllegalStateException: Cannot deserialize object because no JSON deserializer found in classpath. Please put Jackson (Databind), Gson, Jackson, or Yasson in the classpath."
Не подскажешь с чем может быть она связанна? Не понравился ему класс UserData я как понял, но не понял почему
Привет, нужно добавит библиотеку jackson databind к проекту
@@threadqa спасибо большое
@@threadqa Олег, а как идея сама понимает, что нужно использовать эту зависимость? Ведь никаких импортов пакетов в тестовом классе мы не делаем (и в pojo-классе тоже!), и не создаём условный Gson gson = new Gson(); ?
@@threadqa добавила библиотеку, теперь такая ошибка
java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `api.UserData` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
все, поняла, добавила пустой конструктор и все заработало, спасибо
Всё хорошо, но названия полей класса лучше всё же делать по code convention, а то, что не матчится с JSON полями, так это легко исправляется аннотациями.
Подскажите, почему на 18-й минуте не видно в консоле debagger?
Если кто то залез в комментарии ,чтоб посмотреть почему тест выдает ошибку и уже сломал голову не может понять в чем дело( как это было у меня)
Попробуйте мой способ: создавайте в каждом классе дополнительно по пустому конструктору и все переменные класса я сделал публичными.
Все работает на ура)
В зекрепе сделал ответ на этот вопрос))
время с сервера можно проверять в диапазоне "время отправки"< time < "время получения". и тогда не будет флаки теста
47:08 Почему для класса unSuccessReg в цепочке given() отсутствует when()?
методы when() и and() это необязательный синтаксический сахар и используется просто, чтобы отделить визуальную логику строения запроса)
@@threadqa А) Получается, в создании экземпляра класса успешной регистрации тоже можно было их не использовать?
Что делать если в given () просит вписать параметры, не получается как у вас написать
Жаль застопорился в самом начале) Вылезает io.restassured.path.json.exception.JsonPathException: Failed to parse the JSON document, все делал как в уроке и доп. библиотеки установил, не работает ((
После запуска теста
Выбивает ошибку Failed to parse the JSON document
Что может быть?
вопрос. А если мне нужен будет не только содержащийся массив "data", а еще и те данные, которые помимо него есть.
Что мне при этом нужно строку с extract написать?
Привет, тогда можно просто extract.as(ClassName.class);
@@threadqa а ClassName должен при этом быть с тремя вложенными классами, как POJO выдает? Типа
public class ClassName{
class Datum{}
class Root{}
class Support{}
}
@@YashchiK да, ты извлекаешь полный ответ сервера в большой поджо класс, которые в себе должен содержать вложенные классы
НЕ могу понять, почему выводит ошибку:
io.restassured.path.json.exception.JsonPathException: Failed to parse the JSON document
Хотя всё делаю точь-в-точь
У меня вообще всё не так (как обычно), жаль скрин не приложить.
Парка java не зеленая, нет возможности создать Packege, вместо создания класса - создание java class diagram, файл формата java тоже нет возможности создавать, только просто файл и вручную задавать формат. Про то как всё происходит в RegresTest я вообще молчу(
Не понимаю почему так(
Но рассказываете очень понятно, спасибо.
Сделай плиз разбор для GraphQL
Спасибо за видео, очень помогло. По Вашему мануалу все получилось, но у меня по моему тесту есть вот такая проблема..
мне в body надо передать такое
"headers":{"accept":"application/json","WAREHOUSE-TEST":"1"},
и вот куда бы я его не писал, и в поджо класс запроса и в сабо body теста и в спеку везде отдает одну и ту же ошибку
error": {
"message": "Validation error.",
"additional": {
"fieldName": "WAREHOUSE-TEST",
"message": "Header parameter is not passed.",
"bindings": [
Помогите плиз что я не так делаю( Если я запрос передаю весь стрингой тогда проходит все без ошибок и ответ правильный. Заранее спасибо.
Привет, тебе это в заголовки надо помещать в блок headers
@@threadqa Привет, забыл отписать, там как раз в заголовке и не подходило надо было именно в бади передать. Но в итоге проблема была в том что я не правильно импорт подтянул для @JsonProperty и поэтому не видело имени которое я присваивал. Сделал все с нуля и все заработало.
Спасибо большое за Ваши уроки.
на каждый метод классы думаю не надо плодить, на сущности создавать и к ним билд приделать
учусь автоматизировать, еще мало понимаю, делаю все в точности как в ролике, как указано в 18 минуте видео запускаю ReqresTest но в консоли вылазит ошибка E:\Auto learning\Auto 1\src\test\java\API\ReqresTest.java:12:5
java: illegal start of expression и что дальше делать не знаю(
привет, скорее всего что то не указал
посмотри у меня проект на гитхабе в описании под видео
@@threadqa Да спасибо, на тот момент я только начал обучение и просто забыл ; поставить). Теперь стоит задача сделать синхронный тест с 2 запросами, где для 2-го запроса будет использоваться тело ответа из первого запроса. Буду благодарен если подскажешь в каком видео можно это подсмотреть (с меня лайки и комменты)
спасибо за видео.Но валится эта ошибка Cannot deserialize object because no JSON deserializer found in classpath. Please put Jackson (Databind), Gson, Jackson, or Yasson in the classpath
Установи библиотеку Jackson Databind
@@threadqa спасибо !
вот что раздражает в видео по АТ, то что они быстро усторевают, дольше сидишь копаешься, в том что, что-то вырезали или надо какие-то зависимости тянуть что бы все работало ...
Популярная ошибка есть в зекрепе в комментариях
зачем примитивы менять на Object? (int vs Integer)
Вместо регулярного выражения, можно использовать метод substring()
Например:
String currentTime = Clock.systemUTC().instant().toString().substring(0,15);
String responseTime = userTimeResponse.getUpdatedAt().substring(0,15);
23:00 Я написал другой окончания имаила все равно работало
А вдруг кто ответит) Подскажите кто как решил проблему запуска api тестов параллельно на rest assured ?
привет, а зачем паралельно апи тесты, они ведь и так быстро идут)
плюсом еще можешь блокировку поймать за слишком частое обращение к серверу
@@threadqa а как быть в случаях, когда количество апи тестов переваливает за 10к?