gpt4 book ai didi

java - 将 Citrus 变量转换为 Java 变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:09 24 4
gpt4 key购买 nike

我面临一个问题:我需要使用 citrus 变量的值作为 Java 函数的参数。我正在尝试使用上下文和行为来制作,但似乎没有任何效果。

import com.playtika.hof.mgs.config.Context;
import org.springframework.http.HttpStatus;
import com.consol.citrus.http.client.HttpClient;
import lombok.AllArgsConstructor;

@AllArgsConstructor
public class CreateSessionBehavior extends BaseBehavior {

private HttpClient httpClient;
private Long uid;
private String sidVar;
private Context appContext;

public void apply() {
// Create Session ID
http().client(httpClient).send()
.post("/utils/hof/redis/sessions?uid=" + uid);

http().client(httpClient).receive().response(HttpStatus.OK)
.extractFromPayload("$.sid", sidVar).validationCallback((response, context) -> {
appContext.addValue(sidVar, context.getVariable(sidVar));
});

echo("New session in variable " + sidVar + ": ${" + sidVar + "}");

}
}

这里我需要用到sidVar:

import com.playtika.hof.mgs.Kafkaproducer;
import com.playtika.hof.mgs.behavior.CreateSessionBehavior;
import com.playtika.hof.mgs.config.Context;
import org.testng.annotations.Test;
import com.consol.citrus.annotations.CitrusTest;
import com.playtika.hof.mgs.AbstractMGSTest;

@Test
public class TestPublishMessage extends AbstractMGSTest {

@CitrusTest(name = "Test Publish Message")

public void testPublishMessage() {

description("Publish messages on Kafka");

Context appContext = new Context();

applyBehavior(new CreateSessionBehavior(testServer(), getValidUid(0),
sessionName(0), appContext));

String sessionId = appContext.getValue(sidVar);

}
}

有没有办法返回 sidVar 变量,以便我可以在任何需要的地方使用它?

非常感谢。

最佳答案

Citrus 将所有变量保存到对整个测试用例执行有效的公共(public)测试上下文。您可以将 Citrus 测试上下文作为测试方法参数注入(inject)到您的实现中:

public class TestContextInjectionIT extends JUnit4CitrusTestRunner {
@Test
@CitrusTest
public void contextInjection(@CitrusResource TestContext context) {
context.setVariable("message", "Hello, I am a variable!");

echo("${message}");

String message = context.getVariable("message");
log.info(message);
}
}

请注意,我使用的是测试运行器而不是测试设计器。这是因为运行器测试操作会立即执行,因此测试上下文更改在操作执行后立即可见。

除此之外,所有测试操作都可以访问测试上下文。因此,您只需通过 Java DSL 添加自定义操作并访问测试上下文。

public class TestContextAccessIT extends JUnit4CitrusTestRunner {
@Test
@CitrusTest
public void contextInjection() {
variable("message", "Hello, I am a variable!");

echo("${message}");

run(new AbstractTestAction() {
@Override
public void doExecute(TestContext context) {
String message = context.getVariable("message");
log.info(message);
}
});
}
}

关于java - 将 Citrus 变量转换为 Java 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49659177/

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