Укажите тип данных строки Behave. - PullRequest
0 голосов
/ 31 мая 2018

Здесь я написал тест, чтобы определить, отвечает ли API на неправильный запрос с ожидаемым содержимым ...

Scenario: Unkown user response body properties contain expected content
    Given I have a valid client auth token
    And I request a user with an unknown "valid" uuid
    And I get the response json
    Then the expected fields should contain expected content
    | field      | content               |
    | statusCode | 404                   |
    | error      | Not Found             |
    | message    | User record not found |

Это соответствующий шаг:

@then(u'the expected fields should contain expected content')
def step_impl(context):
    for row in context.table:
        received_content = str(context.request_json.get(row['field']))
        expected_content = row['content']
        assert_equal(received_content, expected_content)

Кажется, что Behave преобразует содержимое строки таблицы в строки.

Мой вопрос: возможно ли указать тип данных ячейки в таблице Behave?

В фактическом ответе statusCode - это целое число, но, как вы можете видеть из моей функции шага, я вынужден преобразовать содержимое запроса в строку, чтобы проверить его.Мне не нужно было бы делать это, если бы я мог указать, что 404, который я передаю в столбце содержимого, является целым числом.

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Можно указать типы данных для столбцов в таблице поведения, хотя это не обязательно возможно для определенных строк в столбцах.Смотрите этот учебник .Он объясняет реализацию пользовательских типов с помощью поведения register_type.

Другой вариант - использовать анализатор поведения .Это так близко к тому, что вы ищете, как я нашел.

0 голосов
/ 01 июня 2018

Почему бы не написать свой сценарий как

Given I have a valid client auth token
And I request a user with an unknown "valid" uuid
Then I should get user not found response

Тогда вы можете поместить все детали того, что ответ пользователя не найден, в вспомогательный метод.Это дает вам:

  • простой сценарий
  • нет обработки таблицы для вашего сценария
  • метод, который вы можете использовать в других сценариях, где пользователь не найден
  • гораздо меньшая стоимость изменений, если, например, вы хотите добавить в ответ другое поле.

В целом, хранение сведений о том, КАК вы делаете вещи из своих сценариев, значительно упрощает их реализацию.и намного дешевле в обслуживании.

Надеюсь, что ^^ пригодится:)

...