Я использую https://github.com/taverntesting/tavern, но следующее, вероятно, действительно вопрос PyYAML.
Нам бы хотелось иметь каталог тестов, в котором каждый файл соответствует конечной точке API.
api/v1/test_thing1.tavern.yaml
api/v1/test_thing2.tavern.yaml
и так далее. Каждый документ YAML будет нуждаться в login
, который может идти в common_stages.yaml
в верхней части дерева. Почти все, что я пробовал, заканчивается этой ошибкой от PyYAML
yaml.scanner.ScannerError: mapping values are not allowed here
common_stages.yaml
выглядит так:
---
stages:
- name: &login_required
request:
url: "{host}/api/v1/login"
json:
username: "{username}"
password: "{password}"
method: POST
headers:
content-type: application/json
response:
status_code: 201
cookies:
- session
headers:
content-type: application/json
и тестовый файл выглядит так:
---
test_name: Get thing1 list
includes:
- !include ../../common.yaml
stages:
- name: Get category list
request:
url: "{host}/api/v1/thing1"
method: GET
response:
status_code: 200
headers:
content-type: application/json
Я попытался добавить include_stages в список с помощью common. Я попытался включить его в stages
строке test_thing1.tavern.yaml
. Радости нет.
Все примеры Tavern показывают документ YAML в виде одного длинного файла. Что хорошо для демонстрации, но не для реального использования.