как запустить последовательные перехваты Specflow только для определенного сценария

#c# #selenium #specflow #specrun

#c# #селен #specflow #specrun

Вопрос:

У меня есть платформа Weba utomation, и я добавляю несколько сценариев для тестирования на уровне API. В моих перехватах «После шага» я хочу, чтобы он работал для тестирования уровня API по-разному. например, не переходите к умолчанию «После шага». Как я могу это сделать?

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

 [AfterStep("@API1")]
    public static void AfterSteps()

    {

    } 
  

оригинальный последующий шаг

 [AfterStep]
    public static void AfterStep()
    {
    }
  

конечно, мне нужно изменить имя метода на «Последующие шаги» для моих новых последовательных перехватов.

Пожалуйста, помогите мне, что здесь не так?

Комментарии:

1. Можете ли вы подробнее объяснить, что делает перехват «AfterStep»? Возможно, вам лучше использовать a Given в начале вашего сценария или вместо этого добавить несколько шагов к a Background .

2. @GregBurghardt: — Мой следующий шаг — это просто выход из браузера и очистка файлов cookie и кэша. Однако с тестами API мы не хотим открывать браузер. в моем Aftestep у нас есть класс Pagemanager, который будет вызывать браузер. так что, в основном, с тегом API я просто избегаю, чтобы мои тесты переходили на Afterstep по умолчанию. Дайте мне знать, если вам нужно больше объяснений? Также я на 100% уверен, что мне не нужны данные или фон.

Ответ №1:

В атрибуте вам не нужен @.
So сделает это:

 [AfterStep("API1")]
  

Комментарии:

1. : — да, я понял, что нам не нужен @, и я удалил его. Однако мои тесты все еще проходят через оба перехвата aftestep. тот, у которого есть тег API, и тот, у которого его нет. Так что просто интересно, как мы можем это решить?

Ответ №2:

Если вы не хотите, чтобы ваш первоначальный последующий шаг выполнялся, когда установлена категория API1, используйте следующий код:

         if(ScenarioContext.Current.ScenarioInfo.Tags.Contains("API1"))
        {
            return;
        }