Селен: как остановить тестовую последовательность? - PullRequest
0 голосов
/ 17 июня 2019

Использование Selenium в Visual Studio.Использование NUnit для сортировки моих тестовых случаев.

Я пишу тестовый случай, который сравнивает два серийных номера с оператором if, подобным этому:

[Test]
public void CompareVariables()
{
   if (string.Equals(serialNumberInfo, serialNumberReport))
      Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} are a match! Proceed!");
   else
      Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
      //method for stopping test missing!

Я хочу иметь возможность прервать оставшуюся частьпоследовательность испытаний, если серийные номера не совпадают.

Есть ли метод "конец / стоп тест" или что-то похожее, что я мог бы добавить в else раздел?

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Я думаю, у вас есть несколько вариантов.

1) просто сгенерируйте исключение (и не пройдете тест)

Сгенерировать исключение не удастся выполнить модульный тест.Есть множество различных типов исключений, но база просто Exception.Вы можете проверить различные типы доступных исключений здесь .Там, где это возможно, попытайтесь выбрать исключение, наиболее точно представляющее ошибку (поэтому неверные аргументы, например, используют ArgumentException или некоторую производную от него).

Ваш тест будет выглядеть примерно так:

[Test]
public void CompareVariables()
{
   if (!string.Equals(serialNumberInfo, serialNumberReport))
      throw new Exception($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");

   // The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}

2) Используйте утверждение (и не пройдете тест)

Обычно предполагается, что модульные тесты подтвердят, что произошло что-то желаемое.Если этого не произошло, то должно быть сгенерировано исключение (которое часто обрабатывается для вас некоторой структурой утверждений).

Чтобы вы могли перевернуть тест, чтобы сделать это:

[Test]
public void CompareVariables()
{
   serialNumberInfo.ShouldBe(serialNumberReport);

   // The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}

Это делается с помощью Следует , но существует бесчисленное множество платформ утверждений, поэтому выберите свой любимый.(У mstest есть встроенный, но я считаю его менее читабельным, но это личное предпочтение).

Примечание. Используйте утверждение только тогда, когда вы хотите явно убедиться, что это должно было произойти.Т.е. это должно быть правдой, чтобы мой тест прошел, а не если это произошло, то прервитеЭто трудно объяснить, поэтому я надеюсь, что это имеет смысл?

Исключения для случаев, когда что-то пошло не так, Утверждения для того, когда что-то должно было пойти не так.

3) Выйти из теста (и пройти тест)

Если тест завершается без сгенерированного исключения (либо вручную, либо через структуру утверждений), то этот тест считается проходящим тестом.Поэтому, если вы хотите обработать это как проход, вы можете просто вернуться из теста.

[Test]
public void CompareVariables()
{
   if (string.Equals(serialNumberInfo, serialNumberReport))
   {
      Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} are a match! Proceed!");
   }
   else
   {
        Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
        return;
   }

   // The rest of your tests

}

Это пометит тест как проходящий, но означает, что остальные операции втест не запускается.Однако я бы постарался этого не делать - если только вы действительно не понимаете, почему вы этого хотите, потому что вы можете начать проходить тесты, не зная, почему они прошли (т.е. ничего не утверждая)

Надеюсь, это поможет

0 голосов
/ 17 июня 2019

Если вы хотите закончить тест пораньше, не провалив его, просто используйте return.

[Test]
public void MyTest() {

    //Do some stuff
    if(!shouldContinue) {

        return;

    }

}

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

Редактировать: Я только что заметил, что другой респондент упомянул об этом в конце своего ответа.Так что игнорируйте меня:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...