Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Разделение тестов на логические модули и запуск их на Jenkins

jenkins
testng
Теги: #<Tag:0x00007f7b656e0f18> #<Tag:0x00007f7b656e0dd8>

(Ayarema) #1

Коллеги, всем привет!

Искал среди похожих тем у нас на форуме, ничего похожего не нашел. В общем, суть вопроса в следующем.

  1. Работаю на проекте на котором необходимо выполнить автоматизацию на UI и для API.
  2. После безсонных ночей автоматизации :slight_smile: , я таки написал фреймворк для API, сохранения необходимых данных и дальнейший прогон тестов на UI.
  3. Я решил разделить эти тесты логически, т.е. сначала проганять API, а потом лететь на UI. Разделить решил с помощью testng.xml файлов, т.е. логически разбиты по модулям. Чтобы дальше на CI (Jenkins) было легче анализировать ситуацию и локализировать проблемное место (если оно будет :slight_smile: )

В pom.xml использую плагин maven-surefire-plugin, в котором прописан пока что один дефолтный файл

<plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven.surefire.version}</version>
        <configuration>
            <suiteXmlFiles>
                <suiteXmlFile>TestNG.xml</suiteXmlFile>
            </suiteXmlFiles>

            <testFailureIgnore>true</testFailureIgnore>
            <argLine>
                -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
            </argLine>

        </configuration>

        <dependencies>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
        </dependencies>
    </plugin>
</plugins>

В случае, если запускать мои тесты (меняя название xml файла выше) из CommandLine mvn clean test site - то все успешно выполняется.

Но как мне реализовать это на CI при том не менять каждый раз название файла? Чтобы на Jenkins это был свой джоб под свой testng.xml файл?

Буду рад за помощь!
Спасибо!


(Sergey Korol) #2

Во-первых, учимся форматировать код, иначе в следующий раз тема будет сразу скрываться.
Во-вторых, плохо искали…


(Dmitrii Demin) #3

Либо запускайте тесты без xml, через groups:

  1. http://testng.org/doc/documentation-main.html#test-groups
  2. surefire plugin в POM:

             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>test</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>                   
                    <groups>${env.GROUPS}</groups>
                    <includes>
                        <include>**/*.java</include>
                    </includes>
                </configuration>                
            </plugin>

(Ayarema) #4

Всем спасибо!

Решил выйтьи из ситуации по другому.
В pom.xml создал проперти с дефолтным testng.xml файлом, этот дефолтный будет smoke-test.

И в самом maven-surefire-plugin в блоке suiteXmlFile передаю это проперти.

И в случае с item job на Jenkins, я просто указываю джобу через maven с указанием pom.xml файла, а в goal прописываю параметризированную команду maven, например:

clean -DsomeVariable=someTestNgFile.xml test

Не без помощи :slight_smile: , но это как раз то решение задачи, которое по сути сам себе поставил, каждая джоба запускает свой определенный TestNgFile.xml.

Еще раз всем, спасибо.

p.s. вариант с переменной Jenkins - пока не дошли руки, но наверное тоже интересный вариант.