2017-01-25 12 views
0

Я работаю над автоматизацией некоторых тестов в Visual Studio. Однако различные тестовые методы зависят от eachother, поэтому их всегда нужно выполнять последовательно. Это не проблема, если я не использую методы тестирования datadriven.Visual Studio - Выполнение datadriven-теста последовательно в Visual Studio

Вот что я пытаюсь достичь:

[DataTestMethod] 
[Datarow("Row1")] 
[Datarow("Row2")] 
public void DoThisFirst(){ 
//test execution 
} 

[DataTestMethod] 
[Datarow("Row1")] 
[Datarow("Row2")] 
public void DoThisSecond(){ 
//test execution 
} 

Я хочу, чтобы тесты для запуска в следующем порядке:

  • DoThisFirst - Row1
  • DothisSecond - Row1
  • DoThisFirst - Row2
  • DoThisSecond - Row2

Вместо этого он запускает все итерации первого метода после друг друга, а затем все итерации второго метода.

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

Любые идеи?

ответ

1

Один из способов достижения желаемого результата заключается в следующем.

Имейте один метод проверки данных, который вызывает другие два. Добавьте новый столбец в файл данных, чтобы указать, какой тест выполнить. Дублируйте каждую строку в файле данных и добавьте две тестовые спецификации в каждую строку. В общих чертах код будет:

[TestMethod] 
public void TheTest() 
{ 
    switch (DataSource["TestToRun"]) 
    { 
     case "DoThisFirst" : DoThisFirst(); break; 
     case "DoThisSecond" : DoThisSecond(); break; 
     default: Assert.Fail("Unknown test."); break; 
    } 
} 

Данные испытаний, как CSV, может быть:

TestToRun,UserName,Password,Etc1,Etc2 
DoThisFirst,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1 
DoThisSecond,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1 
DoThisFirst,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1 
DoThisSecond,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1 

Дублирование строки данных является раздражающим, но если TheTest были изменены, чтобы просто позвонить DoThisFirst() с последующим DoThisSecond(), то если DoThisFirst() не удалось, то DoThisSecond() не будет называться. Однако, учитывая, что два теста должны выполняться в этом порядке, может быть неразумно запускать DoThisSecond(), если DoThisFirst() не работает.

+0

Я не использовал это точно, но вы, безусловно, поставили меня на правильный путь. Вместо того, чтобы иметь кучу тестовых методов в зависимости от eachother, я пошел с одним методом DataTestmethod, называя кучу нормальных методов и утверждая возврат. Это даже упростит создание новых тестовых тегов, которые повторно используют один и тот же код. Спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^