Укажите тип данных строки таблицы поведения

Здесь я написал тест, чтобы определить, отвечает ли 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 преобразует содержимое строки таблицы в строки.

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

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


person Jay Stringer    schedule 31.05.2018    source источник


Ответы (2)


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

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

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

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

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

Надеюсь, ^^ кому-то пригодится :)

person diabolist    schedule 01.06.2018
comment
Спасибо большое, даже не думал так подойти к проблеме :) - person Jay Stringer; 05.06.2018

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

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

person natn2323    schedule 01.06.2018