В случаях автоматизации мы часто видим, как люди спрашивают, как извлечь результаты, возвращаемые предыдущим интерфейсом, и передать их во входные параметры следующего интерфейса. Мы используем ключевое слово Extract для извлечения возвращаемых результатов интерфейса.
(Необходимо обновить установочный пакет до версии v1.0.2)
Приведите пример
Используйте одинpostпроситьhttp://httpbin.org/post
POST http://httpbin.org/post HTTP/1.1
User-Agent: Fiddler
Host: httpbin.org
Content-Length: 0
HTTP/1.1 200 OK
Date: Thu, 24 Nov 2022 06:18:03 GMT
Content-Type: application/json
Content-Length: 320
Connection: keep-alive
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Content-Length": "0",
"Host": "httpbin.org",
"User-Agent": "Fiddler",
"X-Amzn-Trace-Id": "Root=1-637f0c9a-23b419f4180f6b843ba941af"
},
"json": null,
"origin": "66.112.216.24",
"url": "http://httpbin.org/post"
}
Например, если мне нужно извлечь параметры URL-адреса в интерфейсе возврата, мы используем ключевое слово Extract
Пример файла test_demo.yml
config:
name: пример публикации
teststeps:
-
name: post
request:
method: POST
url: http://httpbin.org/post
json:
username: test
password: "123456"
extract:
url: body.url
validate:
- eq: [status_code, 200]
- eq: [headers.Server, gunicorn/19.9.0]
- eq: [$..username, test]
- eq: [body.json.username, test]
URL-адрес был извлечен из предыдущего интерфейса. переменная,Затем укажите ссылку на него в следующем интерфейсе.${url}
config:
name: пример публикации
teststeps:
-
name: post
request:
method: POST
url: http://httpbin.org/post
json:
username: test
password: "123456"
extract:
url: body.url
validate:
- eq: [status_code, 200]
- eq: [headers.Server, gunicorn/19.9.0]
- eq: [$..username, test]
- eq: [body.json.username, test]
-
name: post
request:
method: GET
url: http://httpbin.org/get
headers:
url: ${url}
validate:
- eq: [status_code, 200]
Итак, я увидел, что ссылка в сообщении запроса прошла успешно.
GET http://httpbin.org/get HTTP/1.1
Host: httpbin.org
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
url: http://httpbin.org/post
Мы упоминали в предыдущей статьеВозвращаемое значение не может быть переоценено в yaml., Об этой проблеме также упоминали некоторые студенты. Я хочу продолжать получать значение извлеченного результата. Например, если это строка, я могу использовать срезы для получения значения в Python. Итак, в ЯМЛ Как этого добиться?
В этой структуре, которую я перепроектировал, она может поддерживать синтаксис Python и напрямую использовать срезы для получения значений.
headers:
url: ${url[:4]}
запросить сообщение
GET http://httpbin.org/get HTTP/1.1
Host: httpbin.org
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
url: http
Метод проверки продолжает синтаксис проверки httprunner и может поддерживать объекты значений ответа: status_code, URL, ok, заголовки, файлы cookie, текст, json, кодировку. Возвращаемый формат — json, поэтому его можно поддерживать.
Если возвращаемое значение не в формате json, для получения значения можно использовать обычные значения.
Другие функции находятся в постоянной разработке... Если у вас есть хорошие предложения и идеи, вы можете их представить.