t.me/atinfo_chat Telegram группа по автоматизации тестирования

Автоматизация с использованием specFlow при наличии тестов на Nunit

csharp
specflow
nunit
Теги: #<Tag:0x00007f9c54ac4b10> #<Tag:0x00007f9c54ac48e0> #<Tag:0x00007f9c54ac4688>

(Максим Лаптев) #1

Здравствуйте, есть тесты на C# с использованием Nunit
Необходимо поверх существующего накатить specFlow
Собственно вопрос, понятно что придется переписать текущие тесты, но хотелось бы это сделать с минимальными потерями

namespace Tests.test
{
    [TestFixture]
    [Parallelizable]
    class UserCreating
    {
        [Test]
        [Retry(2)]
        [Repeat(1)]
        [Category(CategoryData.user)]
        [TestCase("User1234", "Vladimir Vladimirov", TestName = "Создание юзера")]
        [TestCase("User123", "Ivan Ivanov", TestName = "Создание юзера")]
        public void UserCreating(string user, string username)
        {
		//создаем юзера
		//что то делаем с ним
		//проверяем
		//удаляем юзера
		}
	}
}

Каким образом изменить конструкцию для SpecFlow? из обязательных параметров нужны [Retry(2)],[Repeat(1)],[Category(CategoryData.user)] ну и данные для тестов, SpecFlow можно рядом поставить, если да то подскажите пожалуйста?

В качестве шагов для specflow там будут функции на создание удаления юзера, это понятно, но каким образом заставить это работать?


(Valentin G ) #2

Дам несколько рекоммендация, которые надеюсь помогут:

  1. Ваша задача в том, чтобы разделить имеющиеся тесты на методы - шаги, каждый из которых должен будет иметь аннотацию-шаг, которая будет использоваться в сценариях.
  2. Для этого конкретного случая, мы можете использовать Scenario Outline.
  3. Категории можно добавить к сценариям как таги - @myTag.
  4. Не могу сказать, как сделать то, для чего у вас использованы аннотации - Retry and Repeat.

И да, SpecFlow тесты могут быть быть вместе с обычными NUnit тестами в одном проекте.
Из каждого SpecFlow сценария генерируется тот же NUnit тест, который можно запускать как и остальные.


(Максим Лаптев) #3

Retry - Это повторить тест сколько-то раз, если он неудачный
Repeat - просто повторять набор тестов определенное количество раз
Есть ли такое в SpecFlow?


(Valentin G ) #4

По поводу Retry - надо смотреть, может есть сторонний плагин, по поводу Repeat - можно использовать Scenario Outline.


(Юрий Аксютин) #5

По поводу Retry, настройки тестсьютов, трансформации app.config в Specflow есть специальный файл с расширением srprofile, где все это и еще много чего настраивается, например, повтор упавших тестов:
<Execution
stopAfterFailures="-1"
retryFor="None"
testThreadCount=“3”
testSchedulingMode=“Sequential” />


(Valentin G ) #6

Если ты используешь SpecFlow3, который на DotNetCore, то там может быть уже по другому. По умолчанию app.config не создается.


(Юрий Аксютин) #7

Мы отложили переход на 3 версию, потому что она еще очень сырая, отсутствует нормальная документация. В частности, при попытке перенести конфигурацию из app.config в формат json, постоянно вылетает ошибка, при парсинге этого файла.
У них на баг трекере она тоже заведена


(Valentin G ) #8

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


(Юрий Аксютин) #9

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