我想在所有测试中使用一个全局变量,因此我在citrus-context.xml中进行了以下配置:
<citrus:global-variables>
<citrus:variable name="myVariableName" value="citrus:randomNumber(3)"/>
</citrus:global-variables>
这似乎可行,但是每次我引用此变量时,生成的变量都会更改为新的随机数。
${myVariableName} ${myVariableName} ${myVariableName}
835 165 516
生成在所有测试中使用的随机数的首选方法是什么?
答案 0 :(得分:0)
我通过实现BeforeSuite独自解决了这个问题。感谢这里的这篇文章:How should i pass variable extracted From Payload thru test classes? 因此,这就是我的操作方式:
public class InitializationTest extends TestDesignerBeforeSuiteSupport {
@Override
public void beforeSuite(TestDesigner designer) {
designer.createVariable("myGlobalNumber", RandomNumberFunction.getRandomNumber(3, true));
designer.action(new AbstractTestAction() {
@Override public void doExecute(TestContext testContext) {
testContext.getGlobalVariables()
.put("myGlobalNumber", testContext.getVariable("myGlobalNumber"));
}
});
}
}
答案 1 :(得分:0)
感谢您举报!
不幸的是,您在Citrus中发现了一个错误。似乎每次调用变量时都会对表达式求值。事实并非如此。我已打开此issue on GitHub来跟踪错误。
BR,
斯文