Параметризация сьюта через переменную окружения TeamCity

pom.xml
parameterized
suite
testng.xml
team-city
webdriver
variables
Теги: #<Tag:0x00007fedb8d426e8> #<Tag:0x00007fedb8d425a8> #<Tag:0x00007fedb8d42468> #<Tag:0x00007fedb8d42328> #<Tag:0x00007fedb8d421e8> #<Tag:0x00007fedb8d420a8> #<Tag:0x00007fedb8d41f40>

(Ok Tober) #1

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

Есть selemium-java-testng-maven проект, который ранится на тимсити (понятно не локальном). Ранится хорошо, но проблема, что никак кроме как через testNG.xml нужные тесты не заранить, а значит привет ИДЕ, гит и тд. Мне это подходит, но тестами пользоваться не я один буду, так что возникла необходимость сделать всем желающим доступ к запуску тестов на тимсити.

Была идея - конфигурационный файл (да тот же testNG.xml) вытягивать с нужного места, к которому у всех будет доступ, но сразу возникла проблема, что Тимсити лежит у нас на закрытом сервере, к которому никто доступа не имеет и не должен иметь, ну и админ наш не сильно горит желанием давать туда/оттуда какой либо доступ

Была идея 2 - через тимсити запуск устанавливать переменную окружения, которую прочитаем в проекте, и запущу по ней нужные пакеты. Этим и начал заниматься, пока не упорлся в след проблему:
Тесты лежат по пакетам и нужно запускать параметром определенный пакет (лучше несколько определенных пакетов, но для простоты возьмем один), и запуск будет примерно след вида:

<.package name = com.test.${variable}>

Но в тестНГ параметр > ${variable} передать я не могу, а по сему сильно застрял с этим.

Временное решение - создал 20 тестНГ.хмл для каждого пакета , через профиль считываю переменную окружения в pom.xml - иду на нужный тестнг.хмл, в которому прямо указан один пакет. Чувствую, что это решение очень даже плохое, но пока ничего лучше не придумал. Подскажите, как лучше решить проблему такого рода?

П,С, бонусная задача: через тимсити, переменные окружения передаю
env.suites = packageName
или
env.SUITES = packageName
и в каждом отдельному случае переменную в проекте я не вижу. Но когда пишу оба варианта - все отрабатывает.

xml:

<.profiles>
<.profile>
<.id>testId<./id>
<.activation>
<.property>
<.name>!env.SUITES<./name>
<./property>
<./activation>
<.properties>
<.suites>testNG<./suites>
<./properties>
<./profile>
<./profiles>


(Ok Tober) #2

п.с. пробовал еще в рантайме в бифорсьюте подменять пакеты по которым должны идти тесты, типа
ITestContext.getCurentTest (точно не помню методов) .setXmlPackages(…);
но не прошло, ранится все-равно то, что было изначально.


(Sergey Korol) #3

TestNG не поддерживает плейсхолдеры в xml, так что забудьте. Если нужно точечно запускать, задавайте группы тестов на уровне maven-surefire-plugin. Насчет TC плагина не подскажу, но в Jenkins есть extended-choice-parameter, где нужный список можно вычитывать из файла и передавать в виде checkboxes / comboboxes.