Использование Java DSL TestRunner - Как получить доступ к переменной в моем собственном Java-коде

Я использую Java DSL с TestRunner для определения своих тестов и в основном хочу выполнить следующие шаги:

  1. Загрузите JSON-структуру из конечной точки REST с помощью http-клиента
  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-код, когда это необходимо.


person Christoph Wiechmann    schedule 23.05.2019    source источник


Ответы (1)


Да, я нашел решение сам, просто прочитав документацию во второй (или, может быть, в третий раз).

Я изменил свой тестовый класс следующим образом:

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

Это вводит мне фактический тестовый контекст и позволяет мне получать доступ и управлять переменными из моего Java-кода. Отличный материал.

person Christoph Wiechmann    schedule 24.05.2019