2017-01-09 20 views
1

我正尝试使用加特林,在这里我只是想在第一个方案中的迭代执行一些步骤,在这里我的代码doIf不会话

def create(): ScenarioBuilder = { 
    scenario(name) 
     .exec(session => session.set("DEBUG", debug_set)) 
     .exec(session => session.set("client_id", session.userId)) 
     .doIf(session => session("initialized").asOption[String].isEmpty) { 
     exec(Identity.getIdentityToken) 
     exec(session => session.set("initialized", "true")) 
     } 
     .exitHereIfFailed 
     .during(Duration(15, MINUTES)) { 
     exec(X.setupVars) 
      .exec(X.create) 
      .pause(Duration(1, SECONDS)) 
      .exec(X.get) 
     } 
    } 
} 

不知怎的,第一次迭代,其中没有定义的初始化工作it's它没有到达那里,因为我没有看到日志执行其中一个步骤。

任何想法我做错了什么?

回答

10

一个点在你的doIf缺少第二exec

.doIf(session => session("initialized").asOption[String].isEmpty) { 
    exec(Identity.getIdentityToken) 
    .exec(session => session.set("initialized", "true")) 
} 

干杯,
保罗以及:)
加特林队

+0

感谢了很多!虽然加特林可以抱怨的错过的点,而不是运行,而不是执行该块 – paul

+0

加特林几乎没有办法检查这一点。你正在做的是放弃方法调用返回的值。 AFAIK,即使Java编译器也不检查这一点,只有像SonarQube这样的静态分析工具才会发出一些警告。 –

+0

任何想法为什么现在它为每个场景执行?我猜是因为场景的范围是每个用户/场景。任何想法如何在用户/场景之间共享这些会话值?每个场景我有100个用户,我不想初始化100次。 – paul