我想使用类似Cucumber JVM的东西来驱动为Gatling编写的性能测试。理想情况下,黄瓜功能将以某种方式动态地构建场景 - 可能重复使用类似于“高级教程”中所述的方法的预定义链对象,例如,以编程方式执行Gatling测试
val scn = scenario("Scenario Name").exec(Search.search("foo"), Browse.browse, Edit.edit("foo", "bar")
我已经看了如何Maven插件执行脚本,而且我也看到使用应用程序特征的提及,但我找不到以后的任何文件和这让我感到别人将之前想这样做...
任何人都可以指向(一个加特林noob)在一些文档或示例代码的方向如何实现这一目标?
编辑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测试构建一些可重用的块,可以通过Cucumber的Given/When/Then样式构建。有更好的还是现有的方法?
谢谢,我已经看到了,但它看起来像加载静态Gatling脚本没有通过动态生成的情景 - 我错过了什么? – SilentICE
现在我明白了。我编辑了我的答案。 –