如何在Gatling中将重复的用户注入配置抽为独立复用函数?
可以提取复用,实现方法如下
Gatling的inject方法接受Seq[InjectionStep]类型的参数,你完全可以把重复的注入逻辑封装成独立函数来实现复用。
1. 定义复用的注入配置函数
在你的Simulation类中添加一个函数,把重复的注入步骤封装进去:
private def loadProfile(): Seq[InjectionStep] = Seq( nothingFor(nothingForDuration minutes), rampUsersPerSec(1).to(userCount).during(testRampUpDuration minutes), constantUsersPerSec(userCount).during(testDuration minutes), // 注意:原代码里的`UserCount`是大写,需和变量名保持一致改成小写`userCount` rampUsersPerSec(userCount).to(1).during(testRampDownDuration minutes) )
如果nothingForDuration、userCount等变量不是全局变量,也可以把它们作为函数参数传入,增强灵活性:
private def loadProfile( nothingForDuration: Int, userCount: Int, testRampUpDuration: Int, testDuration: Int, testRampDownDuration: Int ): Seq[InjectionStep] = Seq( nothingFor(nothingForDuration minutes), rampUsersPerSec(1).to(userCount).during(testRampUpDuration minutes), constantUsersPerSec(userCount).during(testDuration minutes), rampUsersPerSec(userCount).to(1).during(testRampDownDuration minutes) )
2. 在场景中复用该函数
修改原来的setUp代码,直接调用这个函数即可:
setUp( script.create_learner_scenario.inject(loadProfile()), script.put_learner_scenario.inject(loadProfile()), script.patch_learner_scenario.inject(loadProfile()), script.get_learner_scenario.inject(loadProfile()) ).protocols(httpConf)
如果用的是带参数的版本,就传入对应变量:
setUp( script.create_learner_scenario.inject(loadProfile(nothingForDuration, userCount, testRampUpDuration, testDuration, testRampDownDuration)), script.put_learner_scenario.inject(loadProfile(nothingForDuration, userCount, testRampUpDuration, testDuration, testRampDownDuration)), script.patch_learner_scenario.inject(loadProfile(nothingForDuration, userCount, testRampUpDuration, testDuration, testRampDownDuration)), script.get_learner_scenario.inject(loadProfile(nothingForDuration, userCount, testRampUpDuration, testDuration, testRampDownDuration)) ).protocols(httpConf)
这样就能彻底消除重复代码,后续如果需要调整注入配置,只需要修改loadProfile函数,所有场景都会同步更新。
内容的提问来源于stack exchange,提问作者Nimesh
相关产品推荐
相关产品推荐

