Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Матрица тестов (выполнение метода со всеми возможными вариациями параметров)

junit
java
allure
selenium
webdriver
Теги: #<Tag:0x00007fedbb9ceb08> #<Tag:0x00007fedbb9ce900> #<Tag:0x00007fedbb9ce770> #<Tag:0x00007fedbb9ce4a0> #<Tag:0x00007fedbb9ce1a8>

(Евгений Тимошенко) #1

Использую java, Selenium Web driver, jUnit4, Allure
Мне тестами необходимо вызывать один и тот же метод. У метода есть к примеру 4 параметра.
Для простоты понимая будем считать что типы параметров булево.

Мне необходимо выполнить тесты в разрезе всех возможных комбинаций этих параметров.
На данный момент на фирме где я работаю создаются на каждую комбинацию отдельный тест.

Минус такого подхода заключается в том, что очень легко запутаться, тяжело определить, все ли комбинации используются и т д.

Есть задумка немного прикрутить jUnit тесты: создать List, и выполнять тесты в цикле. При этом каждый тест должен выглядеть по всем отчетам как отдельный. Из минусов такого подхода вижу сложность, что невозможно будет вручную тестировать тест по определенной комбинации параметров.

Возможно кто-то сталкивался с подобной задачей, и посоветует, как лучше её решить?
p.s. Простите, если неточно описал проблему(я новичёк в java)


(Artur Korobeynyk) #2

Параметризированные тесты


(Евгений Тимошенко) #3

Артур, большое спасибо Вам за помощь! Попробую, потом напишу своё мнение по поводу удобства.


(Vatslau) #4

Dataprovider testNg
пока лучшее решение


(Евгений Тимошенко) #5

Добрый вечер! Попробовал понять что умеют параметризированные тесты. В целом все проблемы вроде бы решаемые, кроме одной: запуск одного теста в IDEA

  1. Сначала попробовал использовать вариант который посоветовал arturk. Результат неплохой, единственное что – не понравилось 3-хуровневое дерево тестов. На первом уровне runner с названием класса, на втором уровне runners с названием теста и вариации теста, и на третьем уровне тест. Т.е. грубо говоря 2-й и 3-й уровень повторяются
  2. Начал смотреть на другие варианты. Нашёл вариант https://github.com/Pragmatists/JUnitParams
    Функционал чуть побольше будет, внешний вид именно такой как нужно, но при этом невозможно запустить вручную один тест, что можно было сделать в варианте1
  3. Потом нашёл такую ссылку, и думал что тут решили проблему https://github.com/square/burst/issues/31
    но оказалось что там та же беда
  4. Итого вывод к которому я пришёл(если он ошибочный, с радостью выслушаю критику): неважно, testNG или jUnit. Из IDEA при нажатии на тест вызываются классы jUnit из чёрного ящика, и отладить или переделать их логику невозможно. Для того чтобы при нажатии правой кнопкой мыши на тест была кнопочка с запуском теста, необходимо чтобы представление этого теста было по шаблону: testName и дальше можно в квадратных скобках писать любые вещи. К примеру: myTest[А парам1=10, парам2=20]. Дальше, IDEA пытается отфильтровать тест по description. Для этого она берет название текущего runner и сопоставляет со всеми возможными runner.
  5. Итого, для того чтобы запустить одиночный тест, необходимо для каждого теста заводить свой runner (что выглядит не так красиво, как если создавать тесты отдельно)

(Vatslau) #6

неправильно
тест НГ нужно ранать хмл
там можно закомментить недужные тесты или ехплицитно прописать 1 тест для дебага