【问题标题】:Using Java DSL TestRunner - How to access variable in my own Java-Code使用 Java DSL TestRunner - 如何在我自己的 Java 代码中访问变量
【发布时间】:2019-05-23 20:13:09
【问题描述】:

我正在使用 Java DSL 和 TestRunner 来定义我的测试,并且基本上希望有以下步骤:

  1. 使用 http 客户端从 REST 端点加载 JSON 结构
  2. 将接收到的 JSON-Structure 提取到 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 代码。

【问题讨论】:

    标签: citrus-framework


    【解决方案1】:

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

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

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

    这会向我注入实际的测试上下文,并允许我从我的 Java 代码访问和操作变量。好东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-10
      • 2016-10-17
      • 1970-01-01
      • 2017-04-26
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多