Size: a a a

QA — Автоматизация

2020 April 03

A

Andrew Carlssin in QA — Автоматизация
Кроме jmeter:)
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Ildar Sadretdinov
Выведи print-ом тело запроса и посмотри что передаёт
Меня заинтересовал этот случай. Я гуглил, и, надо сказать, что АПИшек которые ругаются на числа как стринги надо ещё поискать.
postman-echo показал что если кидаешь в реквест dict, числа могут уходить как стринги.
Но если сам конвертишь dict через json.dumps или делаешь свою строку, это может порешать.

Однако я всё же считаю что стоит подумать о том чтобы не выделываться, быть как все, и принимать числа стрингами так же как и все остальные.
Я просто не смог найти АПИшку под рукой которая этого б не делала.
источник

СС

Сказочный Сникерс in QA — Автоматизация
Roman (rpwheeler)
Меня заинтересовал этот случай. Я гуглил, и, надо сказать, что АПИшек которые ругаются на числа как стринги надо ещё поискать.
postman-echo показал что если кидаешь в реквест dict, числа могут уходить как стринги.
Но если сам конвертишь dict через json.dumps или делаешь свою строку, это может порешать.

Однако я всё же считаю что стоит подумать о том чтобы не выделываться, быть как все, и принимать числа стрингами так же как и все остальные.
Я просто не смог найти АПИшку под рукой которая этого б не делала.
Стандарт json прекрасно поддерживает числа
источник

СС

Сказочный Сникерс in QA — Автоматизация
Зачем сначала переводить число в строку, а потом делать из строки число?
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Сказочный Сникерс
Стандарт json прекрасно поддерживает числа
Поддерживает, да. Но попробуй отправь на postman-echo просто dict и dict через json.dumps.
источник

СС

Сказочный Сникерс in QA — Автоматизация
Так это реализация конкретного сериализатора
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Сказочный Сникерс
Так это реализация конкретного сериализатора
Не спорю, но я за полчаса гугления не смог найти открытую апишку которая бы хотела не "1" а 1.
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Во всех доках которые мне попадались было "1".
источник

СС

Сказочный Сникерс in QA — Автоматизация
Открой исходники реквестс и посмотри что он делает со словарем. Внезапно там будет json.dumps
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Roman (rpwheeler)
Поддерживает, да. Но попробуй отправь на postman-echo просто dict и dict через json.dumps.
.
источник

СС

Сказочный Сникерс in QA — Автоматизация
А в контент тайп запроса что?
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Без контент-тайпа.
источник

СС

Сказочный Сникерс in QA — Автоматизация
Если кидать в реквестс дикт через параметр json то будет application/json
источник

СС

Сказочный Сникерс in QA — Автоматизация
А если дикт через json dumps то ничего или текст
источник

СС

Сказочный Сникерс in QA — Автоматизация
Не помню
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Ну я ж говорю, попробуй через postman-echo . Я разницу увидел.
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Если у тебя получится без разницы, покажи.
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Рабочий ноут где я пробовал у меня сейчас сложен — если нужен скрин кода и респонсов, будет завтра.
источник

СС

Сказочный Сникерс in QA — Автоматизация
вот как отправляется просто dict

POST / HTTP/1.1
Host: python.org
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

1=1HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://python.org/
Connection: close


а вот как с json.dumps

POST / HTTP/1.1
Host: python.org
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 8

{"1": 1}HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://python.org/
Connection: close

а вот как когда передаешь дикт не в параметр data, а в параметр json

POST / HTTP/1.1
Host: python.org
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 8
Content-Type: application/json

{"1": 1}HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://python.org/
Connection: close

чтд
В урленкоде невозможно отличить число от строки, поэтому все в строках будет в итоге. Но кто кидает дикт с числами в параметр data а не в json?
источник

KF

Katya Fedorova in QA — Автоматизация
@vlad_zaiko у меня была такая же проблема. Тоже библиотека реквест но для тайпскприпта. Моя проблема была в том что все тела запроса я клала в параметр (свойство обьекта) form, а не body (это два дефолтных свойства библиотеки реквест). Эти два свойства по-разному копировали данные перед отправкой, и по итогу из-за этого у меня возвращалась ошибка что инт и булиан я передала как строку, хотя я точно передавала их как тот тип который требовал бэкэнд
источник