Как программно вызвать сценарий каратэ из Java?

У меня есть сценарий каратэ, определенный ниже

Feature: Random Users

  Background: 
    * url 'https://askuser.me'

  @get-user
  Scenario: Get Random User data
    Given path 'api'
    When method get
    Then status 200
    * string json = response
    * def Util = Java.type('com.example.mobiletest.utils.TestUtils')
    * def SaveResponse = Util.writeToJSONFile(json,'randomuser.json')

И соответствующий класс Runner определяется, как показано ниже:

public class RandomUserRunner {
    @Karate.Test
    public Karate testRandomUserRunner(){
        return Karate.run("RandomUser").relativeTo(getClass());
    }
}

Я хочу выполнить testRandomUSerRunner() программно из другой функции java, как мне это сделать (причина в том, что сценарий карате получает ответ и сохраняет в файле json, другой метод в java хочет повторно использовать эти шаги)

Я попытался вызвать, как показано ниже, но это не сработало:

RandomUserRunner runner = new RandomUserRunner();
runner.testRandomUserRunner();

Любая помощь или указатели будут очень признательны.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первое - оговорка. Каратэ для этого не предназначено. Похоже, вы уже используете некоторые утилиты Java из Karate, поэтому я лично считаю, что пытаться вызывать Karate из Java неправильно. Классы JUnit существуют для создания отчетов, и здесь также рекомендуется использовать параллель Runner: https://stackoverflow.com/a/65578167/143475

Тем не менее, посмотрите, соответствует ли Runner.runFeature() API вашему варианту использования. Вы также сможете получить доступ к переменным, созданным Feature.

Обратитесь: https://github.com/karatelabs/karate#invoking-feature-files-using-the-java-api

Спасибо, ваша общая статья помогла. У меня есть вариант использования, в котором я должен: 1) получить данные из запроса GET, проверить детали 2) использовать данные ответа с шага 1 в качестве тестовых данных в форме пользовательского интерфейса и проверить функциональность пользовательского интерфейса. Поэтому я пошел в направлении тестирования API с карате и тестирования пользовательского интерфейса с огурцом + селеном. Что вы думаете о подобных случаях использования? Каким должен быть подход по вашему мнению.

Sagar Varule 26.11.2022 12:35

@SagarVarule Я предвзят;) но вам следует подумать о каратэ для тестирования пользовательского интерфейса, чтобы вы могли делать все в одном потоке и с одним синтаксисом. многие предприятия переходят на каратэ с селена и кипариса, а так как мы поддерживаем протокол W3C webdriver, команды могут использовать облачные сетки, такие как lambdatest: github.com/karatelabs/karate/tree/master/karate-core

Peter Thomas 26.11.2022 13:00

Другие вопросы по теме