Я хочу использовать что-то вроде JCM Cucumber для выполнения тестов производительности, написанных для Gatling.Программно выполнить тесты Gatling
В идеале функции Cucumber могли бы как-то построить сценарий динамически - возможно, повторно использовать предопределенные объекты цепи, подобные методу, описанному в «Расширенном учебнике», например.
val scn = scenario("Scenario Name").exec(Search.search("foo"), Browse.browse, Edit.edit("foo", "bar")
Я смотрел на то, как плагин Maven выполняет сценарии, и я также видел упоминание об использовании признака App, но я не могу найти какую-либо документацию для позже, и мне кажется, что кто-то другой хотел бы сделать это раньше ...
Может ли кто-нибудь указать (Gatling noob) в сторону какой-либо документации или пример кода, как этого достичь?
EDIT 20150515
Так, чтобы объяснить немного больше:
Я создал черту, которая предназначена для создания последовательности, я думаю, ChainBuilders, запускаемый шаги огурцов:
trait GatlingDsl extends ScalaDsl with EN {
private val gatlingActions = new ArrayBuffer[GatlingBehaviour]
def withGatling(action: GatlingBehaviour): Unit = {
gatlingActions += action
}
}
GatlingBehaviour будет выглядеть примерно так:
object Google {
class Home extends GatlingBehaviour {
def execute: ChainBuilder =
exec(http("Google Home")
.get("/")
)
}
class Search extends GatlingBehaviour {...}
class FindResult extends GatlingBehaviour {...}
}
А внутри класса StepDef:
class GoogleStepDefinitions extends GatlingDsl {
Given("""^the Google search page is displayed$""") {() =>
println("Loading www.google.com")
withGatling(Home())
}
When("""^I search for the term "(.*)"$""") { (searchTerm: String) =>
println("Searching for '" + searchTerm + "'...")
withGatling(Search(searchTerm))
}
Then("""^"(.*)" appears in the search results$""") { (expectedResult: String) =>
println("Found " + expectedResult)
withGatling(FindResult(expectedResult))
}
}
Идея заключается в том, что я могу затем выполнить всю последовательность действий, через что-то вроде:
val scn = Scenario(cucumberScenario).exec(gatlingActions)
setup(scn.inject(atOnceUsers(1)).protocols(httpConf))
, а затем проверить отчеты или поймать исключение, если тест не выполняется, например время ответа слишком велико.
Кажется, что независимо от того, как я использую метод «exec», он пытается мгновенно выполнить его там, а затем, не дожидаясь сценария.
Также я не знаю, подходит ли это наилучший подход, мы хотели бы создать несколько многоразовых блоков для наших тестов Gatling, которые могут быть построены с помощью стиля Given/When/Then Cucumber. Есть ли лучший или уже существующий подход?
Спасибо, я видел это, но похоже, что он загружает статические сценарии Gatling, не передавая динамически сгенерированный сценарий - я что-то упускаю? – SilentICE
Теперь я понял. Я отредактировал свой ответ. –