所有测试用例的全局随机数

时间:2018-11-09 09:15:54

标签: citrus-framework

我想在所有测试中使用一个全局变量,因此我在citrus-context.xml中进行了以下配置:

<citrus:global-variables>
    <citrus:variable name="myVariableName" value="citrus:randomNumber(3)"/>
</citrus:global-variables>

这似乎可行,但是每次我引用此变量时,生成的变量都会更改为新的随机数。

${myVariableName} ${myVariableName} ${myVariableName}
835               165               516

生成在所有测试中使用的随机数的首选方法是什么?

2 个答案:

答案 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,
斯文