Можно ли повторно использовать блок Пример огурца / корнишона? - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть два разных сценария ios, которые используют один и тот же пример блока. Мне нужно запустить пример блока для двух разных времен дня, и я ищу краткий способ сделать это (без копирования + вставка моего примера блока).

Я заменяю yyymmdd на фактическая дата в моем отчете.

Я хотел бы повторно использовать мой блок Пример, потому что в реальной жизни это НАМНОГО более длинный список.

Scenario Outline: File arrives in the morning
Given a file <file> arrives in the morning
When our app runs
Then The file should be moved to <newFile>
And the date should be today
Examples:
|Filename|NewFilename|
|FileA|NewFileA_yyyymmdd|
|FileB|NewFileB_yyyymmdd|

Scenario Outline: File arrives in the evening
Given a file <file> arrives in the evening
When our app runs
Then The file should be moved to <newFile>
And the date should be tomorrow
Examples:
|Filename|NewFilename|
|FileA|NewFileA_yyyymmdd|
|FileB|NewFileB_yyyymmdd|

Я реализую это в java, хотя я не знаю, является ли это важной деталью.

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

Нет, это не поддерживается в синтаксисе Gherkin. Я не часто советую копировать и вставлять, но это один из случаев, когда это оправдано из-за отсутствующей функции языка.

Как правило, это не должно иметь большого значения, так как размер примера должен быть маленьким Если вам действительно нужно большое количество примеров, то лучшим вариантом будет воссоздание этого теста только в коде (Java, Python, C# и т. Д. c.). Большинство библиотек модульных тестов предлагают те или иные формы управляемых данными тестов, которые могут предоставить DRYer, более удобное в обслуживании решение, чем Gherkin.

0 голосов
/ 22 апреля 2020

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

  • работал намного быстрее (100 000 или даже в 10 000 раз быстрее - это вполне реально c)
  • был бы гораздо более выразительным
  • лучше разбираются с крайними случаями

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

Given a file has arrived
When our app runs
Then the file should be moved 
And it should be renamed
And the new name should contain the current date

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

...