使用 Java DSL TestRunner - 如何在我自己的 Java-代码中访问变量
Using Java DSL TestRunner - How to access variable in my own Java-Code
我将 Java DSL 与 TestRunner 一起使用来定义我的测试,基本上需要以下步骤:
- 使用 http 客户端从 REST 端点加载 JSON-结构
- 将收到的JSON-结构提取到柑橘变量中
- 那么出于某种原因,我想用一些 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 call/include 它。
有没有办法获取实际的 TestContext 并将其交给我的 Java-Code?
我的理解是,当使用 TestRunner 时,一切都会立即执行,我在想:哦,太好了,因为我可以在需要时插入标准 Java-代码。
是的,我自己找到了解决方案,只是阅读了第二次(或第三次)文档。
我把我的 Test-Class 改成了这样:
@CitrusTest
@Test @Parameters("context")
public void run(@Optional @CitrusResource TestContext context) {
...
.....
...
MyClassABC.myStaticFunctionXZY(context.getVariable("myConfig"));
这为我注入了实际的 Test-Context 并允许我从我的 Java-Code 访问和操作变量。很棒的东西。
我将 Java DSL 与 TestRunner 一起使用来定义我的测试,基本上需要以下步骤:
- 使用 http 客户端从 REST 端点加载 JSON-结构
- 将收到的JSON-结构提取到柑橘变量中
- 那么出于某种原因,我想用一些 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 call/include 它。
有没有办法获取实际的 TestContext 并将其交给我的 Java-Code?
我的理解是,当使用 TestRunner 时,一切都会立即执行,我在想:哦,太好了,因为我可以在需要时插入标准 Java-代码。
是的,我自己找到了解决方案,只是阅读了第二次(或第三次)文档。
我把我的 Test-Class 改成了这样:
@CitrusTest
@Test @Parameters("context")
public void run(@Optional @CitrusResource TestContext context) {
...
.....
...
MyClassABC.myStaticFunctionXZY(context.getVariable("myConfig"));
这为我注入了实际的 Test-Context 并允许我从我的 Java-Code 访问和操作变量。很棒的东西。