Каратэ: значения параметров запроса кодируются
Я использую версию карате 0.6.1 и сталкиваюсь с проблемой get
запрос с queryparam.
Scenario Outline: Verify the response Data with account details when there are filter values are provided with wildcard
Given params { <paramName>: <paramValue> }
When method get
Then status 200
Examples:
| paramName | paramValue |
| Name | 'Volvo%' |
| Name | 'test data'|
в запросе url с queryparam становится как url?Name=Volvo%25
А также url?Name=test+data
что не правильно, как я должен решить это.
1 ответ
Это на самом деле не так,
Url-кодирование необходимо для различения специальных символов в ваших данных и специальных символов, которые зарезервированы для создания URL.
Кодировка URL зарезервированных символов:
: Separate protocol (http) from address encoded as %3B
/ Separate domain and directories encoded as %2F
# Separate anchors encoded as %23
? Separate query string encoded as %3F
& Separate query elements encoded as %24
@ Separate username and password from domain encoded as %40
% Indicates an encoded character encoded as %25
+ Indicates a space encoded as %2B
<space> Not recommended in URLs encoded as %20 or +
поэтому, если вы собираетесь передавать какие-либо специальные символы в виде данных через URL, вам нужно % encode
их, чтобы избежать конфликтов.
В каратэ, если вы хотите избежать кодирования вашего URL, не создавайте свой URL, используя путь, параметры, определения параметров.
Вместо этого постройте весь URL-адрес в виде строки и передайте его url
, лайк,
* url 'http://httpbin.org/get?Name=Stark'
Вы можете получить исключение, если вы пытаетесь передать какие-либо специальные символы в этом.
поэтому рассмотрите возможность кодирования URL, если вы собираетесь передавать какие-либо специальные символы.