Помечайте разные примеры в тесте поведения по-разному - PullRequest
0 голосов
/ 31 августа 2018

У меня есть служба Springboot, которая может загружаться с разными spring.profiles.active. Сервис изначально был создан для запуска с spring.profiles.active=profile1. Затем кто-то добавил behave тест / сценарии для сервиса.

Позже я добавил еще один профиль в службу и теперь хочу запустить тесты поведения для обоих профилей. Итак, сначала запускайте тесты поведения, когда служба запускается с spring.profiles.active=profile1, а затем снова запускайте тесты, когда служба запускается с spring.profiles.active=profile2.

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

@profile1
Scenario Outline: test something in profile1
  Given: blah
  ...


@profile2
Scenario Outline: test something in profile2
  Given: blah
  ...

Then run behave tests twice as
>> behave --tags=profile1
>> behave --tags=profile2

Однако существует много сценариев, которые являются общими для обоих профилей, и нет смысла повторять сценарии с разными tags. Например,

Scenario Outline: test that a user is recommended at least 10 items
  Given a user <userId>
  when recommendations are generated
  then at least 10 items are returned in the recommendations

Examples:
|userId|
|123456| # I want to use this userId for profile1
|234567| # and this one too for profile1
|987654| # but this one and the following for profile2
|876543|

Аналогичная запись предоставляет решение, подобное

Scenario Outline: test that a user is recommended at least 10 items
  Given a user <userId>
  when recommendations are generated
  then at least 10 items are returned in the recommendations

Examples:
|userId|
|123456| # I want to use this userId for profile1
|234567| # and this one too for profile1

Examples:
|userId|
|987654| # but this one and the following for profile2
|876543|

and then use `row2.4` etc to call specific row of examples for the second profile.

Это, однако, не кажется мне элегантным (что если я отключу или перегруппирую примеры позже?).

У меня вопрос, есть ли способ пометить конкретные строки примера?

Итак, что-то вроде

Examples: @profile1
|userId|
|123456| # I want to use this userId for profile1
|234567| # and this one too for profile1

Examples: @profile2
|userId|
|987654| # but this one and the following for profile2
|876543|

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Да. С поведением версии 1.2.6 вы можете пометить для каждого примера.
https://behave.readthedocs.io/en/latest/new_and_noteworthy_v1.2.6.html

Вот пример:

Scenario Outline: test that a user is recommended at least 10 items
Given a user <userId>
when recommendations are generated
then at least 10 items are returned in the recommendations
@profile1
Examples:
|userId|
|123456| # I want to use this userId for profile1
|234567| # and this one too for profile1

@profile2
Examples:
|userId|
|987654| # but this one and the following for profile2
|876543|
0 голосов
/ 05 октября 2018

У меня вопрос, есть ли способ пометить конкретные строки примера?

Вы были действительно близко.

@profile1
Examples: 
|userId|
|123456| # I want to use this userId for profile1
|234567| # and this one too for profile1

@profile2
Examples: 
|userId|
|987654| # but this one and the following for profile2
|876543|

Хотя в приложении есть предложение для пользовательских данных реализация , которое может быть полезно для вашего примера сценария. Или, возможно, вы захотите посмотреть на активное сопоставление тегов @use.with_profile=profile1 ниже этого.

...