Огурец: много примеров строк против многих контуров сценария - PullRequest
0 голосов
/ 01 июля 2019

Что касается передового опыта, мне было интересно, лучше ли иметь единый контур сценария, дающий секцию Examples с большим количеством строк или имеющую несколько scenario outline. Например:

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

Scenario Outline: My scenario has many rows in the examples section
  When I perform my request with the following inputs: <param1>, <param2>, ..., <param11>    
Examples:
  | one    | one    | one    | one    | one    | one    | one    | one    | one    | one    | one    |
  | two    | two    | two    | two    | two    | two    | two    | two    | two    | two    | two    |
...
  | eleven | eleven | eleven | eleven | eleven | eleven | eleven | eleven | eleven | eleven | eleven |

Однако я считаю, что этот подход менее читабелен, и поэтому мне было интересно, будет ли лучше иметь несколько scenario outlines, которые повторяют ту же логику, например:

Scenario Outline: My scenario ONE
   When I perform my request with the specific inputs for test case ONE
   ...
Scenario Outline: My scenario TWO
   When I perform my request with the specific inputs for test case TWO
   ...

Scenario Outline: My scenario ELEVEN
   When I perform my request with the specific inputs for test case ELEVEN
   ...

Хотя я ненавижу повторяться, я должен сказать, что этот подход гораздо более читабелен.

Какой подход является наилучшей практикой?

Спасибо за ваше время

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Я бы предложил полностью избегать контуров сценария. При написании тестов ясность гораздо важнее, чем СУХОЙ.

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

Каждая строка примера должна тестировать что-то конкретное и полезное для бизнеса, и в этом случае наш сценарий должен описывать ЧТО и ПОЧЕМУ этой вещи, а не запутывать вещь в наборе примеров.

Значит ли это, что в Cucumber нет места для примеров - ну, не совсем.

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

Эта статья, которую я написал много лет назад, становится более подробной, http://pages.andrew.premdas.org/2011/06/27/composable-features-and-tables.html

0 голосов
/ 01 июля 2019

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

Единственное ограничение, которое я вижу в подходе «Сценарная структура», - you can't define your own description для каждого сценария.,Тем не менее, я думаю, что вы должны быть в состоянии справиться с этим, исследуя runtime options.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...