2016-12-02 4 views
0

Я ищу механизм, который позволит создавать более гибкие сценарии.Гибкость сценариев в Gherkin.

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

Scenario Outline: Testing query with 1 attribute with these 2 record in and another 2 out of result 
    Given I'm connected to <db> database 
    When I select <query> from database 
    Then Result should contain fields: 
    | <row> | 
    | <yes1> | 
    | <yes2> | 
    And Result should not contain fields: 
    | <row> | 
    | <no1> | 
    | <no2> | 

    Examples: 
    | db | row | yes1 | yes2 | no1 | no2 | query               | 
    | 1 | model | 1013 | 1006 | 1012 | 1007 | "SELECT model FROM pc WHERE speed >= 3.0;"      | 
    | 1 | maker | E | A | C | H | "SELECT maker FROM product NATURAL JOIN laptop WHERE hd >= 100;" | 

Scenario Outline: Testing query with 2 attributes with these 2 record in and another 2 out of result 
    Given I'm connected to <db> database 
    When I select <query> from database 
    Then Result should contain fields: 
    | <rowA> | <rowB> | 
    | <yes1A> | <yes1B> | 
    | <yes2A> | <yes2B> | 
    And Result should not contain fields: 
    | <rowA> | <rowB> | 
    | <no1A> | <no1B> | 
    | <no2A> | <no2B> | 
    Examples: 
    | db | rowA | rowB | yes1A | yes1B | yes2A | yes2B | no1A | no1B | no2A | no2B | query        | 
    | 1 | model | price | 1004 | 649 | 2007 | 1429 | 2004 | 1150 | 3007 | 200 | "SELECT model,price FROM product" | 
    | 2 | name | country | Yamato | Japan | North | USA | Repulse | Brit | Cal | USA | "SELECT name, country FROM clases" | 

Я хотел бы, чтобы иметь возможность написать один сценарий с общим количеством атрибутов. Было бы здорово, если количество проверенных строк также не будет определено.

Мечтаю написать только один общий сценарий:

Testing query with N attribute with these M record in and another L out of result 

Как сделать это в Огурец? Это возможно с любыми хаками?

ответ

4

Короткий ответ: Нет. Охота не о гибкости, очертания о конкретных примерах. Конкретный пример - все, кроме гибкого.

Длинный ответ:

Вы описываете использование Огурец в качестве тестового инструмента. Однако цель с Геркиным - не проверять вещи. Целью с Gherkin является содействие коммуникации между развитием и заинтересованными сторонами, которые хотят определенного поведения.

Если вы хотите что-то проверить, есть и другие инструменты, которые будут поддерживать именно то, что вы хотите. Любая тестовая структура будет использоваться. Мой личный выбор был бы JUnit, поскольку я работаю в основном с Java.

Тест лакмуса для принятия решения по оснащению - это кто должен уметь это понимать?

Если ответ нетехник, я бы, вероятно, использовал Охотник с очень конкретными примерами. Конкретные примеры, скорее всего, не сравнивают вещи в базе данных. Конкретные примеры имеют тенденцию описывать внешнее, наблюдаемое поведение системы.

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

В вашем случае вы просите язык программирования. Огурцы и огурцы не являются подходящими инструментами в вашем случае.

2

Вы можете сделать это без каких-либо взломов, но я не думаю, что вы хотите, по крайней мере, не весь сценарий в одной строке.
Вам нужно будет следовать структуре BDD, иначе зачем использовать BDD?

Вы должны иметь и соблюдать структуру, как:

Given 
When 
Then 

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

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

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

Смежные вопросы