t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как запускать определенный набор тестов в Jenkins?

Теги: #<Tag:0x00007fd76ea6e418> #<Tag:0x00007fd76ea6e0a8> #<Tag:0x00007fd76ea6db30> #<Tag:0x00007fd76ea6d7e8> #<Tag:0x00007fd76ea6d630> #<Tag:0x00007fd76ea6d4f0>

Привет) Подскажите, есть у меня: suite name “Jenkins” и есть к примеру набор


<test name="test1">

… тесты
и есть набор
<test name="test2">
…тесты

Как через параметры, запускать к примеру только набор test2 cьюта Jenkins?

Фреймворк-то какой используете? TestNg, JUnit4, JUnit5?
От его документации и пляшите

TestNG использую

Посмотрите на -testnames вот тут:
https://testng.org/doc/documentation-main.html#running-testng

Но я бы предложил использовать группы и запускать вот так:

mvn test -Dgroups=group1,group2

Если используете maven. Можно также под gradle сделать аналогично.

Это более правильно идеологически: Вы запускаете группу тестов на CI, а не вручную слепленный набор. Потому что при необходимости запуск группы можно легко повторить - принадлежность тестов группе прописана в самих тестах, а вот набор придётся создавать заново или хранить в каких-нить текстовых файлах, что не наглядно.

Вот смотрите, сейчася запускаю так: clean test -DsuiteXmlFile=src/main/resources/$SUITES , запускаю определенный suite. а мне еще нужно через параметр запускать определнный тестовый нобор из SUITE.

Пробовал -testnames, но у меня почему то раниться полностью suite

Сделайте несколько Xml.

да их уже и так много)) Возможно есть другой вариант?

Вам уже его указали - не использовать xml файлы.

я сомневаюсь, что мне и группы помогут. Смотрите, что я хочу решить. Есть например тесты, которые ранятся на 5 сайтах, соответственно для каждого сайта свой набор тестов и свой xml файл с набором. Это все работает. Но сейчас, я хочу запускать отдельно ui тесты и например скриншот тесты, через Jenkins. Да, если создать еще 1 отдельный xml под каждый сайт с набором скриншот тестов, тогда все будет работать(и того 10 xml файлов, но может и 100 сайтов быть).Но я планировал добавить скриншот тесты в общий xml по сайту и ранить по названию тестового набора или группы

Вот что написано в описании параметра:
Only tests defined in a < test > tag matching one of these names will be run.
Поэтому тут вопрос: а что у Вас записано в Ваших сьютах? Если данный тег у Вас в сьюте отсутствует логично, что фильтр не сработает.

Ничто не мешает Вам определить любые пересечения групп, какие нужны.
Оч просто:

@Test (groups={site1, UI})
public void test1() {}

@Test (groups={site1, screenshot})
public void test2() {}

@Test (groups={site2, screenshot})
public void test3() {}

Ну и т.д. Создайте столько групп, сколько нужно, затем запускайте те из них, которые хотите.

Согласен, это просто - когда у вас макс. 5 сайтом(5-10 параметров). А если у меня будет 50?И тестов штук 500-1000?Проставлять в каждый тест группу с новым сайтом?

Вот пример:

<suite name="Stie.com" verbose="1" parallel="true"
       thread-count="5">

    <test name="Example1">
        <classes>
            <class name="tests.TestClass1">
                <methods>

                    <include name="example1"/>
                  
                </methods>
            </class>
        </classes>
    </test>

    <test name="Example2>
        <classes>
            <class name="tests.TestClass2>
                <methods>
                    
                    <include name="example2"/>

                </methods>
            </class>
        </classes>
    </test>

А если у меня будет 50?И тестов штук 500-1000?Проставлять в каждый тест группу с новым сайтом?

Нет, конечно. У Вас же не будет 1 общий тест на 50 сайтов, правильно?
Поэтому старые тесты оставляете без изменений, а новые - тегируете новой группой.

Как раз, будет)

Что-то я тогда не до конца понимаю контекст Вашей задачи )
Если у Вас сайты, для которых бОльшая часть тестов будет общая - значит, эти сайты написаны на каком-то общем движке и при этом имеют схожую бизнес-логику. Например, интернет-магазины, написанные под копирку на 1 шаблоне. В этом случае у Вас вряд ли будет 1000 тестов - в них просто нет нужды. В этом случае я бы группировал тесты по функциональности: типа login, add to bucket и т.д. Таким образом, сьют для нового сайта будет набираться из функциональных групп.
Если же сайты функционально разные - тогда % общих тестов будет чрезвычайно мал: ну там login какой-нить - и всё. В этом случае можно смириться с тем, что надо дописать пару букв, чтобы добавить новую группу в пару тестов )

да, функциональность почти одинаковая. Есть пул тестов, например 100. На 1 сайте - 100 раниться, на втором 80, на третем может быть 50. Поэтомуесть xml файл под каждый сайт з набором тестов.
Разбивать только на функциональнные группы не получится. Не все тесты из функ.группы могут биты на сайта