2017-01-10 14 views
1

Огурец/BEHAVE Examples

Огурец Характеристика синтаксиса test automation using examples:Behave: Написание сценария Outline с динамическими примерами

Feature: Scenario Outline (tutorial04) 

    Scenario Outline: Use Blender with <thing> 
    Given I put "<thing>" in a blender 
    When I switch the blender on 
    Then it should transform into "<other thing>" 

    Examples: Amphibians 
     | thing   | other thing | 
     | Red Tree Frog | mush  | 
     | apples  | apple juice | 

    Examples: Consumer Electronics 
     | thing   | other thing | 
     | iPhone  | toxic waste | 
     | Galaxy Nexus | toxic waste | 

Тестовый набор будет работать четыре раза, один раз для каждого примера, что дает результат, аналогичный :

enter image description here

Моя проблема

Как я могу проверить использование конфиденциальных данных в разделе Examples? Например, я хотел бы протестировать внутренний API с идентификаторами пользователей или номерами SSN, не сохраняя данные, жестко закодированные в файле функций.

Есть ли способ загрузить Examples динамически из внешнего источника?

Update: Открыт github issue по проекту в ведут себя.

+0

Это изменение повлияет на сам язык окультуры. Если он будет реализован для «behave», тогда только тогда начнется использование диалекта Gherkin, который сильно отличается от окультура, который в настоящее время используется огурцом-рубином, огурцом-java, specflow и кто знает, что еще. Вы должны попытаться сделать так, чтобы поддельные данные могли использоваться с вашим кодом, данные, которые можно безопасно сохранить в файле функций. –

ответ

0

Здесь вы ищете что-то еще, но так как раньше я был в похожей ситуации с Огурцом, может быть, кто-то тоже окажется в этом вопросе, ища возможное решение. Мой подход к этой проблеме заключается в использовании BDD variables, который я могу обработать позже во время выполнения в моем step_definitions. В моем коде python я могу проверить, что является значением переменной Gherkin и сопоставить ее с тем, что необходимо.

Для этого примера:

Scenario Outline: Use Blender with <thing> 
    Given I put "<thing>" in a blender 
    When I switch the blender on 
    Then it should transform into "<other thing>" 

    Examples: Amphibians 
     | thing   | other thing   | 
     | Red Tree Frog | mush     | 
     | iPhone  | data.iPhone.secret_key | # can use .yaml syntax here as well 

перевести бы такой step_def код:

@given('I put "{thing}" in a blender') 
def step_then_should_transform_into(context, other_thing): 
    if other_thing == BddVariablesEnum.SECRET_KEY: 
    basic_actions.load_secrets(context, key) 

Так все, что вам нужно сделать, это иметь хорошо определенный DSL слой.

-1

Что касается вопроса использования SSN-номеров при тестировании, я бы просто use fake SSNs и не беспокоиться о том, что я утечка личной информации людей.

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

Scenario Outline: Accessing the admin interface 
    Given a user who <status> an admin has logged in 
    Then the user <ability> see the admin interface 

Examples: Users 
    | status | ability | 
    | is  | can  | 
    | is not | cannot | 

В этом файле нет необходимости показывать информацию о пользователе. Этапная реализация отвечает за создание или выбор соответствующего типа пользователя в зависимости от значения status.