Как настроить TeamCity на запуск функциональных тестов для сайтов

Как настроить TeamCity на запуск функциональных тестов для сайтов
Недавно получил вопрос «как настроить TeamCity для запуска тестов, написанных на Selenium WebDriver и C#». Сначала хотел ответить человеку расписав всё в ответном сообщении, однако потом понял, что это не один десяток строк займёт. Немного подумав решил написать данную статью, так как у многих возникают такие вопросы. Настройкой TeamCity занимался год назад и с тех пор иногда меняю некоторые параметры в проекте, а целыми проектами уже не настраиваю, так как нет надобности, поэтому при написании данной статьи обновлю и свои знания.

Используемые технологии:
— тип проекта — DLL;
— тесты написаны на Selenium WebDriver + C# + NUnit;
— GIT -> Bitbucket.

При написании статьи параллельно все действия буду производить на виртуальной машине (скрины ведь нужно откуда-то брать). Тестовый проект для подключения к TeamCity возьмём отсюда (в конце той статьи есть ссылка на скачивание).

У нас должно быть следующее:
— GIT, в котором находится наш тестовый проект;
— учётная запись в GIT для TeamCity, с помощью её TeamCity будет забирать исходники из GIT (если проект и доступ к нему открыты, то учётная запись не нужна);
— установленный TeamCity;
— на компьютере, где установлен TeamCity Agent, также должен быть установлен MSBuild 2015 (мы будем настраивать TeamCity на сборку DLL в Visual Studio 2015);
— в TeamCity должен быть установлен пакет NuGet требуемой нам версии, которая потом будет нами указываться в настраиваемом проекте по запуску тестов:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Как должен быть подготовлен тестовый проект:
— в проекте все возможные пакеты должны быть подключены через NuGet, если много DLL подключено вручную, то убедитесь, что при сборке они копируются в каталог с собираемым проектом. TeamCity будет с помощью NuGet подтягивать все подключённые к проекту пакеты.

Установку TeamCity я не буду описывать, так как она элементарная: скачать, запустить, установить. У меня TeamCity установлен на Windows (поклонники Linux, устанавливайте на Linux). Приступим к настройке.

Входим в TeamCity. Создаём новый проект:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Тип проекта «Manually». Задаём «Name» (имя проекта) и «Project ID» (уникальный идентификатор), описание заполняете на своё усмотрение и нажимаем кнопку «Create»:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Далее создаём конфигурацию «Build Configurations»:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Как настроить TeamCity на запуск функциональных тестов для сайтов

Нажимаем на кнопку «Create».

Далее сразу переходим к созданию VCS roots, который будет основан на GIT. В VCS roots указываем откуда TeamCity будет скачивать исходный код тестов:

Как настроить TeamCity на запуск функциональных тестов для сайтов

«Fetch URL» берётся нами в GIT требуемого нами проекта:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Не указывайте «Fetch URL» у себя тот что на картинке, так как он будет недоступен вам. Ещё нам важно указать с какой ветки TeamCity будет брать код (по умолчанию «master»), а также учётные данные к GIT:

Как настроить TeamCity на запуск функциональных тестов для сайтов

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

Перед тем как нажать «Create» проверьте, что TeamCity может подключиться к GIT, для этого нажмите на кнопку «Test conntection».

Следующим шагом будет добавление «Build steps»:
1. Получение с помощью NuGet пакетов, подключённых к проекту.
2. Сборка DLL перед запуском тестов.
3. Запуск тестов с помощью NUnit.

Как настроить TeamCity на запуск функциональных тестов для сайтов

Build steps 1

Добавляем шаг (кнопка «Add build Step»). И прописываем как указано на картинке:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Остальное оставляем по умолчанию и нажимаем кнопку «Save».

Build steps 2

Добавляем очередной шаг (см. картинку):

Как настроить TeamCity на запуск функциональных тестов для сайтов

Остальное оставляем по умолчанию и нажимаем кнопку «Save».

Build steps 3

Добавляем последний шаг (см. картинки):

Как настроить TeamCity на запуск функциональных тестов для сайтов

Как настроить TeamCity на запуск функциональных тестов для сайтов

Остальное оставляем по умолчанию и нажимаем кнопку «Save».

Последний шаг требует подробного пояснения в некоторых местах.

«Path to NUnit console tool» указывается путь к «nunit3-console.exe», который и будет запускать тесты из DLL. Мы указали следующее:

%teamcity.build.checkoutDir%\packages\NUnit.ConsoleRunner.3.7.0\tools\nunit3-console.exe

%teamcity.build.checkoutDir% — рабочий каталог TeamCity агента. У меня он имеет путь:

c:\TeamCity\buildAgent\work\646371f74808e053

«646371f74808e053» — автоматически формируется такое наименование (у вас будет другое). У вас при первом запуске тестов может появляться ошибка, в которой будет говориться, что не найден «nunit3-console.exe» по определённому пути:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Тогда вам надо будет вычислить рабочий каталог и сверить с тем что указан в ошибке и, при необходимости, поправить путь в третьем Build steps.

«Run tests from» — из какого файла запускать тесты. Здесь мы указали путь к нашей DLL, которая будет собирается на втором шаге:

%teamcity.build.checkoutDir%\AutoTest\bin\Release\AutoTest.dll

Как и в случае с путями к «nunit3-console.exe» у вас может возникать при первых запусках ошибка следующего вида:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Это значит вы неправильно указали путь к DLL. Вычислите полный путь до DLL в рабочем каталоге и поправьте при необходимости в третьем Build steps.

«Additional command line parameters» — тут указываются параметры, с которыми должны запускаться тесты. Я указал «—result=TestResult.xml» — это означает, что «nunit3-console.exe» должен писать отчёт о результатах в файл «TestResult.xml». Отчёт не удобен для чтения, но хоть что-то. Можете формировать отчёт сами прочитав статью Как генерировать собственный отчёт в тестах NUnit.

«Include categories» — тесты какой категории запускать. Если не указать, то будут запущены все тесты. Если указать категорию тестов, то будут запущены тесты только определённой категории:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Проверка агента

Также нам необходимо проверить, чтобы TeamCity агент, который будет запускать тесты был доступен для нашего проекта:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Если он недоступен, то это означает, что характеристики компьютера, где установлен агент, не соответствуют проекту. Пример: на компьютере с агентом установлен MSBuild 2013, а в проекте мы укажем, что он собираться должен с помощью Visual Studio 2015. В этом случае агент не будет нам доступен, и мы не сможем запускать тесты. Возможны и другие причины недоступности.

Если перейти в свойства агента, то там можно указывать какие проекты на нём запускать и т.д.

Запуск тестов

После того как всё настроили можно запускать тесты перейдя на главную страницу:

Как настроить TeamCity на запуск функциональных тестов для сайтов

Если хотите запускать тесты по расписанию, при появлении нового кода тестов и т.д., то это настраивается в настройках проекта в триггерах:

Как настроить TeamCity на запуск функциональных тестов для сайтов

  • Понравилось? Добавьте в избранное или поделитесь с друзьями:

Добавить комментарий

Ваш e-mail не будет опубликован.