gpt4 book ai didi

java - Citrus-Framework:根据状态代码进行条件验证

转载 作者:行者123 更新时间:2023-12-01 18:34:17 24 4
gpt4 key购买 nike

我正在评估用于休息服务黑盒测试的 citrus-framework。

有没有办法使用 java DSL 和条件容器根据状态代码进行验证?

       http(httpActionBuilder -> httpActionBuilder
.client(sutClient)
.receive()
.response()
.messageType(MessageType.JSON)
.extractFromPayload("$.", "operationReponse")
.extractFromHeader(HttpMessageHeaders.HTTP_STATUS_CODE, "statusCode"));

conditional().when("${statusCode} = 200").actions(
// how to validate on ${operationResponse} ??
.validate("$.field1", "${expectedUUID}")
.validate("$.elements[0].result", "APPROVED")
);

conditional().when("${statusCode} = 301").actions(
// how to extract from a variable ${operationResponse} ??
extractFromPayload("$.pollUrl", "idToGet");
http(hab -> hab.client(sutClient).send().get("/v1/myendpoint"));
http(hab -> hab.client(sutClient).receive().response(HttpStatus.OK)
.messageType(MessageType.JSON)
.validate("$.field1", "${expectedUUID}")
.validate("$.elements[0].result", "APPROVED")

);

最终希望创建一种在不同测试用例上重用的行为。

最佳答案

这里您需要的是将收到的 Http 响应存储到本地消息存储中以供以后验证。您可以为收到的消息添加名称,而不是将有效负载提取到变量中:

http(httpActionBuilder -> httpActionBuilder
.client(sutClient)
.receive()
.response()
.messageType(MessageType.JSON)
.name("operationResponse")
.extractFromHeader(HttpMessageHeaders.HTTP_STATUS_CODE, "statusCode"));

您可以稍后在进一步的测试步骤中访问指定的消息内容。

echo("citrus:message(helloMessage.payload())")

对于更复杂的逻辑,我将添加自定义测试操作并访问消息存储以按名称加载消息:

action(new AbstractTestAction() {
@Override
public void doExecute(TestContext context) {
// do something with stored message
Message message = context.getMessageStore().getMessage("operationResponse");
}
})

顺便说一句,我在您的示例代码中发现了一个拼写错误,其中使用了“operationReponse”和“operationResponse”。

关于java - Citrus-Framework:根据状态代码进行条件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60090159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com