Перейти к содержимому

Тестирование REST API
онлайн, начало 25 октября
Selenium IDE 3: стартовый уровень
онлайн, начало 29 октября
Аудит и оптимизация QA-процессов
онлайн, начало 29 октября
Тестирование веб-приложений 2.0
онлайн, начало 29 октября
Фотография

Вызвать Get в тесте


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Nikolaus

Nikolaus

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 04 августа 2021 - 12:32

Привет всем!
пишу свой первый тест на Андроид и есть проблемы.
На этапе авторизации, требуется перехватить код, 
Но по факту я получаю null
Использую Rest Assured
Выглядит запрос так
@Test
public void getOTP() {
String otp = RestAssured.
when().get("http://имястенда/?ui...9номертелефона").
then().statusCode(200).assertThat().
// and().body("email",is(newMail)).
extract().path("otp");
System.out.println(otp);
}

В респонсе мы получаем два параметра 
1) код otp всегда рандомный( его и надо перехватить) и 
2)uid = номер телефона 

{
"otp": "код",
"uid": " номер телефона"
}

Подскажите что делаю не так? почему вместо кода получаю null?
Возможно есть более легкий вариант чем использовать Rest Assured?
ИСпользую - Android Studio- для запуска эмулятора
Idea, Selenium, - сами тесты
Appium


  • 0

#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 921 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 04 августа 2021 - 14:35

А что делает? И какой язык?

extract().path("otp");


  • 0

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#3 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 869 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 04 августа 2021 - 14:45

 

А что делает? И какой язык?

extract().path("otp");

 

 

 

 java, извлечь otp

 

 

Можно так еще попробовать, хотя 99% ответ будет таким же

String otp = RestAssured.
when().get("http://имястенда/?ui...9номертелефона").
then().statusCode(200)
.extract().jsonPath().get("otp");

Перепроверьте свой запрос через какой-нибудь Постман, по идее у вас должно все работать, может какой-нибудь .contentType(ContentType.JSON) необходимо добавить

 

И залогируйте свой респонс типо так

String otp = RestAssured.
when().get("http://имястенда/?ui...9номертелефона").
then().log().all().statusCode(200)
.extract().jsonPath().get("otp");

  • 0

#4 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 921 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 04 августа 2021 - 15:06

Ну я так и подумал. Просто не припомню, чтобы сталкивался с такой командой. И в интернете информации почти нет (либо я не так ищу).


  • 0

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#5 Nikolaus

Nikolaus

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 05 августа 2021 - 08:08

через постман все работает без проблем

Попробую добавить контенттайп, и логирование

 

А что делает? И какой язык?

extract().path("otp");

 

получить код 
А инфу я взял из документации по рест ашшуред)


  • 0

#6 Nikolaus

Nikolaus

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 05 августа 2021 - 11:28

добавил контенттайп, и логирование) результат такой же(


  • 0

#7 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 869 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 05 августа 2021 - 14:08

добавил контенттайп, и логирование) результат такой же(

 

 

Дайте:

а) У постмана реквест и респонс

б) У рест ассюреда реквест и респонс

 

И сразу будет понятно в чем ошибка


  • 0

#8 Nikolaus

Nikolaus

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 06 августа 2021 - 11:12

 

добавил контенттайп, и логирование) результат такой же(

 

 

Дайте:

а) У постмана реквест и респонс

б) У рест ассюреда реквест и респонс

 

И сразу будет понятно в чем ошибка

 

а)постман реквест
http://имястенда.ru/?uid=+7909номер телефона
респонс

{
"otp""код",  - всегда рандом
"uid"" номер телефона". - всегда статичен =  номеру запросе
}

б)рест ашшуред - ранее  такой вариант у меня работал, когда писал тесты на ВЕб версию( но различался только гет запрос)
@Test
public void getOTP() {
String otp = RestAssured.
when().get("http://имястенда/?ui...9номертелефона").
then().statusCode(200).assertThat().
extract().path("otp");
System.out.println(otp);
}

Второй

  • 0

#9 sergueik

sergueik

    Активный участник

  • Members
  • PipPip
  • 145 сообщений
  • ФИО:кузьмин сергей

Отправлено 07 августа 2021 - 17:39

@Nikolaus  

 

 

если все еще проблемы то попробуйте не использовать "builder pattern" 

 

вот это

 
 
final String path = "users";
final String search = "data[0].name";
final int statusCode = 200;
final String name = "Bilva Nair";




RestAssured.baseURI = "https://gorest.co.in";
RestAssured.basePath = "public/v1";
Response response = RestAssured.get(path);
assertThat(response.statusCode(), is(statusCode));
String data = response.asString();
assertThat(data, notNullValue());
System.out.println("response: " + data);
String result = new JsonPath(data).get(search).toString();
assertThat(result, containsString(name));
System.out.println("returned: " + result);

и вот это

String result = RestAssured.when().get(path).then().statusCode(statusCode)
.assertThat().log().all().extract().path(search);

результат не должен отличаться. подставьте свои параметры


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале