Data Driven Test в Kotest

Пакет io.kotest.data имеет специальный набор классов и функций, позволяющих организовать Data Driven Testing. Давайте создадим простой тест c Data Provider-ом:

Согласитесь, пример выше выглядит довольно просто. Давайте разложим его по полочкам:

  1. В начале, как и в обычном тесте, мы определяем контейнер для тестов.
  2. Далее степ Given server is up выполнится точно также, как и в обычном тесте, то есть один раз.
  3. Следующий этап -- функция forAll. Эта функция принимает наборы Row, а также функциональный блок, в котором мы продолжим декларировать шаги нашего теста.
  4. Теперь функция row определит 1 набор тестовых данных, необходимых для одной итерации. Кстати, в пакете в файле io.kotest.data.rows.kt есть 22 функции для различного количества данных в одном наборе. Если этого количества вам не хватит, вы можете реализовать свою последовательность в специальном подходе Property Based Testing.
  5. В итоге мы получаем две итерации, причем каждая из них имеет свой набор тестовых данных. Опять же, в каждом наборе, в свою очередь, есть 2 значения. По сути, мы получаем функциональный блок, который будет выполнен два раза.

Остается добавить, что есть важнейшее ограничение на имена в рамках контейнера, вследствие чего все имена степов должны быть уникальны. Именно поэтому в шагах добавляются уникальные индексы [$index]. Кстати, вы можете обойтись и без индекса, печатая uuid в каждом шаге, так как индекс, по сути, применяется лишь для упорядоченности в отчете.

По материалам https://habr.com/ru/company/nspk/blog/520380/.