使用Java DSL TestRunner-如何使用自己的Java代码访问变量

时间:2019-05-23 20:13:09

标签: citrus-framework

我正在将Java DSL与TestRunner一起使用来定义我的测试,并且基本上想要执行以下步骤:

  1. 使用http客户端从REST端点加载JSON结构
  2. 将收到的JSON结构提取到Citrus变量中
  3. 然后出于某种原因,我想使用一些Java代码来操纵此变量-但是我无法在Java代码中使用它。

基本上是这样的:

http(builder -> builder.client("client").send()
    .get("/config").header("Content-Type", "application/json"));
http(builder -> builder.client("client").receive()
    .response(HttpStatus.OK).messageType(MessageType.JSON)
    .extractFromPayload("$", "myConfig"));

已设置变量:

echo("${myConfig}")

显示所需的输出。但是,如何在纯Java中访问该变量以对其进行处理?
我尝试过这种方法:

variable("chgConfig", MyClassABC.myStaticFunctionXZY("${myConfig}");

我已经尝试使用Citrus Function,但是我不知道如何使用Java DSL来调用/包含它。
也许有什么方法可以获取实际的TestContext并将其移交给我的Java代码?

我的理解是,当使用TestRunner时,所有内容都会立即执行,我在想:哦,太酷了,因为我可以在需要时插入标准Java代码。

1 个答案:

答案 0 :(得分:0)

是的,我自己找到了解决方案,只是阅读了文档的第二遍(也许是第三遍)。

我已经这样更改了我的测试班:

    @CitrusTest
    @Test @Parameters("context")
    public void run(@Optional @CitrusResource TestContext context) {
...
.....
...
    MyClassABC.myStaticFunctionXZY(context.getVariable("myConfig"));

这为我注入了实际的Test-Context,并允许我从Java代码访问和操作变量。好东西。