Как запустить тесты фреймворка робота на основе коммитов git?

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

В настоящее время я использую Jenkins для выполнения пакетных команд Windows. Моя первая работа срывает все из репозитория.

cd /d C:\home\(Repository here)
git pull --summary

Моя вторая работа запускает указанные мной тесты, что в настоящее время является полной регрессией.

robot -P C:\home\(Repository root here) C:\home\(Path to test cases)

Есть ли способ запускать определенные тесты на основе определенных тегов в git? Например, запуск тестов «Вход в систему», потому что кто-то отправил фиксацию с тегом [Login] в своем сообщении фиксации.

Вот пример набора тестов.

FileName = C: \ home (Repo) \ Regression \ Common \ Login \ LoginTestSuite.txt

*** Settings ***
Documentation    Login Test Suite
Suite Setup    Suite Setup
Library    SeleniumLibrary
Force Tags    LoginTests

*** Test Cases ***
User A Login Test
[Documentation]    This is documentation
[Tags]    Requirement A
(Test Steps Here)

Дополнительная информация

Версия Robot Framework: 3.0.4

Фронтенд приложения: AngularJS

Серверная часть приложения: C #


person Justin Wilkins    schedule 04.01.2019    source источник
comment
вы спрашиваете, как сообщить Дженкинсу, какие тесты запускать, или вы спрашиваете, как определить, какие тесты из вашего набора связаны с тегом в сообщении о фиксации?   -  person Breaks Software    schedule 04.01.2019
comment
Что конкретно вы спрашиваете - как получить теги в коммитах последнего слияния; или как запустить определенные тесты робототехники?   -  person Todor Minakov    schedule 04.01.2019
comment
Извините, если я недостаточно прояснил. Я спрашиваю, как определить конкретные тесты из моего набора, которые связаны с тегом в сообщении фиксации.   -  person Justin Wilkins    schedule 04.01.2019
comment
Какова структура вашего набора тестов - вы используете теги? Любая другая методология маркировки / категоризации?   -  person Todor Minakov    schedule 04.01.2019
comment
Мы используем принудительные теги в самих тестах вместе с файловой структурой. Таким образом, наши имена файлов структурированы в соответствии с приложением.   -  person Justin Wilkins    schedule 04.01.2019
comment
Хорошо, если я скажу вам запустить все тесты входа в систему, как вы их определите? А что насчет чего-то более сложного, например, функциональности (например, запустить все тесты создания объекта X)? Добавьте эту информацию к вопросу, это очень важно, чтобы сообщество могло вам помочь.   -  person Todor Minakov    schedule 05.01.2019
comment
Тег в сообщении фиксации точно такой же, как и те, которые вы используете в тестовых примерах?   -  person Bence Kaulics    schedule 05.01.2019
comment
@TodorMinakov Я буду идентифицировать их по названию тега. Допустим, кто-то внес изменения, которые повлияли на логин. Их сообщение о фиксации будет примерно таким. [Вход] Изменены некоторые цвета на экране входа в систему. Основываясь на тексте в скобках [], я хочу запустить тесты на основе этого тега. Проблема в том, что я не знаю, как поместить текст сообщения о фиксации в эти скобки. Или есть лучший способ структурировать это?   -  person Justin Wilkins    schedule 05.01.2019


Ответы (1)


Судя по обсуждениям в комментариях, ваша цель - запустить тесты Robot Framework с определенными тегами; эти теги взяты из тегов git в последнем слиянии (назовем их "gtags", чтобы различать их).

Один определяет случаи, которые будут запускаться на основе их тегов, через --include параметр командной строки; поэтому, если теги gtags включают "LoginTests", вы должны запускать только их следующим образом:

robot -P C:\home\(Repository root here) --include logintests C:\home\(Path to test cases)

Если тегов gtags несколько, скажем, (LoginTests, LogoutTests), вы можете добавить дополнительные --include параметры:

--include logintests --include logouttests

Другой вариант - объединить их в один include аргумент - RF позволяет это, используя «И», «ИЛИ» и «НЕ» логические операторы внутри значения:

--include logintestsORlogouttests

С помощью «И» будут выбраны только случаи, имеющие оба тега, «ИЛИ» - случаи, имеющие любой из тегов (звучит как ваш случай), «НЕ» отменяет логику отслеживания. Эти три управляющие строки чувствительны к регистру.

Естественно, чтобы эта схема работала, теги gtags должны быть такими же, как и те, которые вы использовали в тестовых примерах. Если нет, вам придется добавить некоторую логику для сопоставления тегов gtags с тегами в случаях («Вход» -> «тесты входа»).

Теги в РФ нормализованы - переводятся в нижний регистр и все пробелы удаляются; для RF "LoginTest" == "Login Test" == "login test" == "logintest" (хотя использование пробелов не рекомендуется - слишком легко поместить два в исходный код, таким образом присвоив регистру два отдельных тега). Таким образом, какой бы регистр не использовался в тегах gtags, они будут сопоставлены, если после нормализации строки останутся такими же.

person Todor Minakov    schedule 05.01.2019
comment
Спасибо вам за помощь. Очень хорошо составленный ответ. - person Justin Wilkins; 05.01.2019