Недавно получил вопрос «как настроить 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 требуемой нам версии, которая потом будет нами указываться в настраиваемом проекте по запуску тестов:
Как должен быть подготовлен тестовый проект:
— в проекте все возможные пакеты должны быть подключены через NuGet, если много DLL подключено вручную, то убедитесь, что при сборке они копируются в каталог с собираемым проектом. TeamCity будет с помощью NuGet подтягивать все подключённые к проекту пакеты.
Установку TeamCity я не буду описывать, так как она элементарная: скачать, запустить, установить. У меня TeamCity установлен на Windows (поклонники Linux, устанавливайте на Linux). Приступим к настройке.
Входим в TeamCity. Создаём новый проект:
Тип проекта «Manually». Задаём «Name» (имя проекта) и «Project ID» (уникальный идентификатор), описание заполняете на своё усмотрение и нажимаем кнопку «Create»:
Далее создаём конфигурацию «Build Configurations»:
Нажимаем на кнопку «Create».
Далее сразу переходим к созданию VCS roots, который будет основан на GIT. В VCS roots указываем откуда TeamCity будет скачивать исходный код тестов:
«Fetch URL» берётся нами в GIT требуемого нами проекта:
Не указывайте «Fetch URL» у себя тот что на картинке, так как он будет недоступен вам. Ещё нам важно указать с какой ветки TeamCity будет брать код (по умолчанию «master»), а также учётные данные к GIT:
Остальное оставляем по умолчанию или настраиваем под себя, если знаете, что делаете.
Перед тем как нажать «Create» проверьте, что TeamCity может подключиться к GIT, для этого нажмите на кнопку «Test conntection».
Следующим шагом будет добавление «Build steps»:
1. Получение с помощью NuGet пакетов, подключённых к проекту.
2. Сборка DLL перед запуском тестов.
3. Запуск тестов с помощью NUnit.
Build steps 1
Добавляем шаг (кнопка «Add build Step»). И прописываем как указано на картинке:
Остальное оставляем по умолчанию и нажимаем кнопку «Save».
Build steps 2
Добавляем очередной шаг (см. картинку):
Остальное оставляем по умолчанию и нажимаем кнопку «Save».
Build steps 3
Добавляем последний шаг (см. картинки):
Остальное оставляем по умолчанию и нажимаем кнопку «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» по определённому пути:
Тогда вам надо будет вычислить рабочий каталог и сверить с тем что указан в ошибке и, при необходимости, поправить путь в третьем Build steps.
«Run tests from» — из какого файла запускать тесты. Здесь мы указали путь к нашей DLL, которая будет собирается на втором шаге:
%teamcity.build.checkoutDir%\AutoTest\bin\Release\AutoTest.dll
Как и в случае с путями к «nunit3-console.exe» у вас может возникать при первых запусках ошибка следующего вида:
Это значит вы неправильно указали путь к DLL. Вычислите полный путь до DLL в рабочем каталоге и поправьте при необходимости в третьем Build steps.
«Additional command line parameters» — тут указываются параметры, с которыми должны запускаться тесты. Я указал «—result=TestResult.xml» — это означает, что «nunit3-console.exe» должен писать отчёт о результатах в файл «TestResult.xml». Отчёт не удобен для чтения, но хоть что-то. Можете формировать отчёт сами прочитав статью Как генерировать собственный отчёт в тестах NUnit.
«Include categories» — тесты какой категории запускать. Если не указать, то будут запущены все тесты. Если указать категорию тестов, то будут запущены тесты только определённой категории:
Проверка агента
Также нам необходимо проверить, чтобы TeamCity агент, который будет запускать тесты был доступен для нашего проекта:
Если он недоступен, то это означает, что характеристики компьютера, где установлен агент, не соответствуют проекту. Пример: на компьютере с агентом установлен MSBuild 2013, а в проекте мы укажем, что он собираться должен с помощью Visual Studio 2015. В этом случае агент не будет нам доступен, и мы не сможем запускать тесты. Возможны и другие причины недоступности.
Если перейти в свойства агента, то там можно указывать какие проекты на нём запускать и т.д.
Запуск тестов
После того как всё настроили можно запускать тесты перейдя на главную страницу:
Если хотите запускать тесты по расписанию, при появлении нового кода тестов и т.д., то это настраивается в настройках проекта в триггерах:
nice
Спасибо за статью) Очень качественно написано, всё просто и понятно.
Большое спасибо за проделанную работу!!
Пожалуйста, перезалейте скрины(не отображаются)
Скриншоты отображаются все.
На вашей стороне какая-то проблема.