Огурец: как выполнить весь список схемы сценария вместе с примером для другого набора атрибутов - PullRequest
0 голосов
/ 12 июля 2020

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

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

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

Scenario Outline : Check the behaviour of all the products

Given the POST retrieveProductdetails api url with valid authorization
When POST api is applied for the <"Products">
Then verify the behaviour of all the <"Properties"> and its <"result">

Examples:

|Properties         |result|
|Appearance         | Successful|
|reading            | Successful|
|writing            |Successful|
|memo               |Successful|
|Singing            |Successful|
|Help               |Successful|
|Adancefeature      |Successful|
|Antiquefeatuer     |Succesful|
|AI nature          |Successful|
|Interaction        |Successful|

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

Если я начну писать третью переменную, как показано ниже, я напишу 200 строк / примеров (20 * 10 = 200). Как и в приведенном выше сценарии, у меня есть от 25 до 30 деталей, которые необходимо проверить для всех 20 продуктов. Обслуживание будет очень сложным. Есть ли лучший вариант для этого?

Examples:
|Properties         |result         |Products|
|Appearance         | Successful    |Alexa|


List of Products
|Products|
|Alexa|
|firetv|
|GoogleHome|
|Chromecast|
|SmartHub|
|SmartTV|
|AmazonVideo|
|AmazonPhoto|
|Echo|
|Echo Dot|
|Echo Show|
|Ring|
.
.
.
.
|SmartHome| 

1 Ответ

0 голосов
/ 12 июля 2020

Вы усложняете себе задачу по нескольким причинам.

  1. Вы не описываете поведение системы. Я не уверен, что должно делать ваше приложение, но похоже, что у вас есть продукт определенного типа, и для всех экземпляров этого типа продукта должны быть установлены определенные флаги.

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

  2. Вы пытаетесь программировать на Gherkin. Шаги в Gherkin не являются шагами в тестовом скрипте. Они не должны описывать точную операцию, необходимую для получения результата. Когда вы используете Gherkin для описания поведения системы, не имеет значения, общаетесь ли вы с системой в модульных тестах, через http или браузер.

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

  3. Похоже, вы проводите тестирование на основе фиксированных данных. Похоже, что ваши данные уже введены в систему. Вы просто проверяете, все ли в порядке. Это не лучший тест, потому что он предполагает, что система находится в определенном состоянии, а не создает систему в этом состоянии или проверяет его.

Итак, чтобы исправить свой файл функций, вы можете на что-то вроде этого:

Scenario: All smart home products are in the category of AI powered spy-devices 
  Given the smart home product "<Product>"
  When I inspect this smart home product
  Then it has all the properties of an AI powered spy-device:
    | Appearance         |
    | reading            |
    | writing            |
    | memo               |
    | Singing            |
    | Help               |
    | Adancefeature      |
    | Antiquefeatuer     |
    | AI nature          |
    | Interaction        |
    
  Examples:
    | Product     |
    | Alexa       |
    | firetv      |
    | GoogleHome  | 
    | Chromecast  |
    | SmartHub    |
    | SmartTV     |
    | AmazonVideo |
    | AmazonPhoto |
    | Echo        |
    | Echo Dot    |
    | Echo Show   |
    | Ring        |
    .
    .
    .
    .
    | SmartHome   | 

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

edit:

Если вы действительно хотите проверить, все ли данные были введены в систему правильно, вы также можете сделать что-то вроде этого:

Scenario: All smart home products are in the category of AI powered spy-devices 
  Given the smart home product "<Product>"
  When I inspect this smart home product
  Then it has all the properties:
    | Appearance         | <Apperance> |
    | reading            | <Reading>   |
    | writing            | <....>      |
    | memo               |             |
    | Singing            |
    | Help               |
    | Adancefeature      |
    | Antiquefeatuer     |
    | AI nature          |
    | Interaction        |
    
  Examples:
    | Product     | Apperance | Reading | ....
    | Alexa       | Yes       | No
    | firetv      | No        | Yes
    | GoogleHome  | Yes       | No
    .
    .
    .
    .
    | SmartHome   | No        | Yes     | ....

Но я бы посоветовал не использовать для этого Cucumber. В этом случае вам лучше поместить свои данные в файл Excel и использовать параметризованный тест JUnit5s.

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