У allure есть огромное количество интеграций для разных языков и фреймворков, в том числе и для scalatest - наиболее популярного тестового фреймворка для scala. Совсем недавно я добавил поддержку для allure-scalatest версии 2.13 к уже существующей 2.12. Я коротко расскажу как подключать и использовать allure-scalatest.
Как подключить
- Добавить зависимость в
build.sbt
val allureScalaTestVersion = "2.13.3" ... val allureScalaTest = "io.qameta.allure" % "allure-scalatest_2.13" % allureScalaTestVersion % Test
- Добавить testOptions для scalatest
testOptions in Test ++= Seq( Tests.Argument(TestFrameworks.ScalaTest, "-oD"), Tests.Argument(TestFrameworks.ScalaTest, "-C", "io.qameta.allure.scalatest.AllureScalatest") )
Подробно что эти опции делают можно почитать тут Если коротко, то scalatest позволяет указать класс reporter-а. Reporter позволяет отображать результат тестов различными путями, чем мы пользуемся.
You can create classes that extend
Reporter
to report test results in custom ways, and to report custom information passed as an event “payload” - Для всех тестов необходимо прописать trait
AllureScalatestContext
.As ScalaTest uses different thread for reporter you can’t use Allure Java API until you populate context. So you need add AllureScalatestContext trait for each test
Пример теста
import io.qameta.allure.Allure.{StepContext, step}
import io.qameta.allure.{Feature, Owner}
import io.qameta.allure.scalatest.AllureScalatestContext
import org.scalatest.flatspec.AnyFlatSpec
@Owner("viclovsky")
@Feature("feature")
class AllureApiSpec extends AnyFlatSpec {
"test" should "be passed" in new AllureScalatestContext {
step("first")
step("second", () => {
step("child1")
step("child2")
step("child3")
() =>
})
step("third", (context: StepContext) => {
val a = context.parameter("a", 123L)
val b = context.parameter("b", "hello")
println(a)
println(b)
() =>
})
}
}
Результат
Далее просто запускаем sbt test
и генерируем отчет из папки allure-results