Skip to content

Commit

Permalink
add more info about using variables (#49)
Browse files Browse the repository at this point in the history
  • Loading branch information
JustSkiv authored Apr 2, 2020
1 parent 7840a94 commit 49043f6
Show file tree
Hide file tree
Showing 2 changed files with 189 additions and 0 deletions.
97 changes: 97 additions & 0 deletions README-ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,103 @@ responseHeaders:

`responseHeaders` - все заголовки ответа HTTP для указанных кодов состояния HTTP.

### Переменные

В описании теста можно использовать переменные, они поддерживаются в следующих полях:

- method
- path
- query
- headers
- request
- response

Пример использования:

```yaml
- method: "{{ $method }}"
path: "/some/path/{{ $pathPart }}"
query: "{{ $query }}"
headers:
header1: "{{ $header }}"
request: '{"reqParam": "{{ $reqParam }}"}'
response:
200: "{{ $resp }}"
```

Присваивать значения переменным можно следующими способами:

- в описании самого теста
- из результатов предыдущего запроса
- в переменных окружения или в env-файле

Приоритеты источников соответствуют порядку перечисления.

#### Подробнее про способы присваивания:

##### В описании самого теста

Пример:

```yaml
- method: "{{ $method }}"
path: "/some/path/{{ $pathPart }}"
variables:
reqParam: "reqParam_value"
method: "POST"
pathPart: "part_of_path"
query: "query_val"
header: "header_val"
resp: "resp_val"
query: "{{ $query }}"
headers:
header1: "{{ $header }}"
request: '{"reqParam": "{{ $reqParam }}"}'
response:
200: "{{ $resp }}"
```

##### Из результатов предыдущего запроса

Пример:

```yaml
# если в ответе plain text
- name: "get_last_post_id"
...
variables_to_set:
200: "id"
# если в ответе JSON
- name: "get_last_post_info"
variables_to_set:
200:
id: "id"
title: "title"
authorId: "author_info.id"
```

Обратите внимание - если нужно использовать значение вложенного поля, можно указать путь до него:
> "author_info.id"

Глубина вложенности может быть любая.

##### В переменных окружения или в env-файле

Gonkey автоматически проверяет наличие указанной переменной среди переменных окружения (в таком же регистре) и берет значение оттуда, в случае наличия.

Если указан env-файл, то описанные в нем переменные добавятся/заменят соответствующие перемнные окружения.
env-файл указывается с помощью параметра env-file

Пример env-файла (стандартный синтаксис):
```.env
jwt=some_jwt_value
secret=my_secret
password=private_password
```

env-файл, например, удобно использовать, когда нужно вынести из теста приватную информацию (пароли, ключи и т.п.)

### Фикстуры

Чтобы наполнить базу перед тестом, используются файлы с фикстурами.
Expand Down
92 changes: 92 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,99 @@ or for elements of map/array (if it's JSON):

`responseHeaders` - all HTTP response headers for the specified HTTP status codes.

### Variables

You can use variables in the description of the test, the following fields are supported:

- method
- path
- query
- headers
- request
- response

Example:

```yaml
- method: "{{ $method }}"
path: "/some/path/{{ $pathPart }}"
query: "{{ $query }}"
headers:
header1: "{{ $header }}"
request: '{"reqParam": "{{ $reqParam }}"}'
response:
200: "{{ $resp }}"
```

You can assign values to variables in the following ways (priorities are from top to bottom):

- in the description of the test
- from the response of the previous test
- from environment variables or from env-file

#### More detailed about assignment methods

##### In the description of the test

Example:

```yaml
- method: "{{ $method }}"
path: "/some/path/{{ $pathPart }}"
variables:
reqParam: "reqParam_value"
method: "POST"
pathPart: "part_of_path"
query: "query_val"
header: "header_val"
resp: "resp_val"
query: "{{ $query }}"
headers:
header1: "{{ $header }}"
request: '{"reqParam": "{{ $reqParam }}"}'
response:
200: "{{ $resp }}"
```

##### From the response of the previous test

Example:

```yaml
# if the response is plain text
- name: "get_last_post_id"
...
variables_to_set:
200: "id"
# if the response is JSON
- name: "get_last_post_info"
variables_to_set:
200:
id: "id"
title: "title"
authorId: "author_info.id"
```

You can access nested fields like this:
> "author_info.id"

Any nesting levels are supported.

##### From environment variables or from env-file

Gonkey automatically checks if variable exists in the environment variables (case-sensitive) and loads a value from there, if it exists.

If an env-file is specified, variables described in it will be added or will replace the corresponding environment variables.

Example of an env file (standard syntax):
```.env
jwt=some_jwt_value
secret=my_secret
password=private_password
```

env-file can be convenient to hide sensitive information from a test (passwords, keys, etc.)

### Fixtures

Expand Down

0 comments on commit 49043f6

Please sign in to comment.