Size: a a a

testing_in_python

2021 April 19

СС

Сказочный Сникерс... in testing_in_python
ты смеешься что ли?
источник

СС

Сказочный Сникерс... in testing_in_python
например
источник

ЖС

Жук Самсаед... in testing_in_python
+-
источник

ТЭ

Тачами Экстович... in testing_in_python
Смех сквозь слезы
источник

ТЭ

Тачами Экстович... in testing_in_python
Выдал админку, такое надо поощрять
источник

Т

Тинькофф in testing_in_python
Подскажите пожалуйста, как лучше сделать, есть два запроса:
1. post - в результате выполнения отдает json, значение из которого должно стать параметром get запроса
2. get - берет параметр и запрашивает информацию у сервера

Между post и get запросом должна быть пауза (ее значение непостоянно), чтобы сервер успел обработать наши данные. Если эти два запроса идут в одном тесте, то get возвращается ни с чем, потому что сервер еще не отработал.
Как можно зациклить выполнение конкретно запроса get (с учетом того, что они в одном тесте с post), чтобы было так, например: если на get вернулось 'please wait', отправь get еще раз. Иначе - выведи
результат на экран?

Если разбить на два теста, то кроме повторных запросов в get, нужно еще сделать ссылку на значение, полученное в post запросе, потому что оно является параметром. В какую сторону можно ещё подумать?
источник

EB

Evgenii B in testing_in_python
> Между post / get должна быть пауза
Это особенность вашего сервера такая?

Или у вас асинхронный http запрос? Потому что если он синхронный, то отправляя сначала post, и получая ID сущности, серверу не нужно времени на создание сущности, если, конечно, ваш post запрос синхронный по своей сути  и создающий сущность сразу и не «регистрирующий создание», когда нужно отдельно проверять состояние объекта (как реализация семафора, например)
источник

Т

Тинькофф in testing_in_python
Да, сервер так работает: post запрос создаёт задание на сервере и сервер начинает его выполнять. Get-ом мы просто узнаём, что там с нашим заданием, какие результаты его выполнения. И в зависимости от того, что передали в post (какой размер задания), длительность обработки будет разной. Поэтому нужно опрашивать сервер до тех пор, пока он не отдаст конечный результат

Например, post отправили один раз, а get+параметр из post-а отсылаем каждую секунду, и так секунд 20
источник

EB

Evgenii B in testing_in_python
Ну значит напишите функцию метод, которая в течении нескольких попыток будет слать запрос, ожидая в конечном итоге получить правильный ответ
источник

ЖС

Жук Самсаед... in testing_in_python
timeout = N
while timeout:
   result = get()
   if result:
       return
   time.sleep()
   timeout -= 1
else:
   fail()
источник

ЖС

Жук Самсаед... in testing_in_python
не претендую на гуру, но делою так
источник

EB

Evgenii B in testing_in_python
В добавок к примеру кода выше Можете сделать экспоненциальный таймаут запросов, чтобы не перегрузить своими запросами сервер:
Например перед какой новой попыткой запроса ждать дольше и дольше :

[0.5, 1, 2, 3, 5, 10, 20, 30] # каждая новая итерация ожидания берет time.sleep() с новым значением
источник

Т

Тинькофф in testing_in_python
@noduality @panemquotidianum  Спасибо вам большое! Кажется это именно то, что нужно))
источник

СС

Сказочный Сникерс... in testing_in_python
https://pastebin.com/TLsxsFxw

не благодарите)
источник

ЖС

Жук Самсаед... in testing_in_python
tldr
источник

ЖС

Жук Самсаед... in testing_in_python
вот если бы библиотечную принес, былоб круто
источник

СС

Сказочный Сникерс... in testing_in_python
чел… библиотеку на 2 метода ретрая и ожидания?
источник

ЖС

Жук Самсаед... in testing_in_python
ну на контексты то сделоли библиотеку
источник

ЖС

Жук Самсаед... in testing_in_python
авообще где-то я видел шаблон для таймаутов
источник

СС

Сказочный Сникерс... in testing_in_python
во первых это билтин. во вторых код либы контекста вот чуууточку больше
источник