Есть ли способ использовать пользовательские теги, чтобы игнорировать правильные тесты в Specflow - PullRequest
0 голосов
/ 16 января 2020

В связи с разработкой наша команда обеспечивает автоматическое покрытие продукта для веб- и настольных сред через SpecFlow, Selenium и Appium. Чтобы упростить структуру автоматизации, мы решили повторно использовать существующий сценарий Specflow ios как для Интернета, так и для настольных компьютеров. Однако некоторые из существующих сценариев Specflow ios не могут быть автоматизированы из-за множества проблем с возможностями драйвера appium. Таким образом, существует необходимость использовать какой-то тег Specflow @ignore для пропуска некоторого тестового сценария ios во время тестового запуска для настольного компьютера, но этот сценарий ios все еще должен быть в состоянии запускаться для веб-среды. Я пытался гуглить, но не нашел ничего, связанного с моей проблемой. Возможно, некоторые из вас, ребята, имеют решение этой проблемы и могут дать мне совет, как ее решить?

1 Ответ

0 голосов
/ 24 января 2020

Существует способ использовать пользовательский тег для игнорирования теста, но вам нужно будет использовать внутренний интерфейс specFlow IUnitTestRuntimeProvider и записать logi c в привязке, чтобы игнорировать тест во время выполнения.

В файле объектов

  @ignore
  Scenario: mobile scenario
  Given some common step for web and mobile

В классе привязки BindingClass

public static ScenarioContext _scenarioContext;

Конструктор класса привязки

 public BindingClass(ScenarioContext scenarioContext)
        {
            _scenarioContext = scenarioContext;
        }

А вот привязка

 [Given(@"some common step for web and mobile")]

  public void someTest(){
      if (BindingClass.scenarioContext.ScenarioInfo.Tags.Contains("ignore"))
            {
                var unitTestRuntimeProvider = (IUnitTestRuntimeProvider)
                RediTestControl._scenarioContext.GetBindingInstance((typeof(IUnitTestRuntimeProvider)));
                unitTestRuntimeProvider.TestIgnore("ignored");
            }
        else {

               //initiate appium driver or webDriver
            }
  }

Это будет игнорировать тест, если он обнаружит тег @ignore в сценарии в файле объектов. Вы можете по-прежнему иметь другие теги в сценарии. Он будет игнорировать тест, только если найдет @ignore. Для веб-сценария ios вы можете просто удалить @ignore

  Scenario: web scenario
  Given some common step for web and mobile
...