У меня есть сценарий каратэ, определенный ниже
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();
Любая помощь или указатели будут очень признательны.
Первое - оговорка. Каратэ для этого не предназначено. Похоже, вы уже используете некоторые утилиты 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
@SagarVarule Я предвзят;) но вам следует подумать о каратэ для тестирования пользовательского интерфейса, чтобы вы могли делать все в одном потоке и с одним синтаксисом. многие предприятия переходят на каратэ с селена и кипариса, а так как мы поддерживаем протокол W3C webdriver, команды могут использовать облачные сетки, такие как lambdatest: github.com/karatelabs/karate/tree/master/karate-core
Спасибо, ваша общая статья помогла. У меня есть вариант использования, в котором я должен: 1) получить данные из запроса GET, проверить детали 2) использовать данные ответа с шага 1 в качестве тестовых данных в форме пользовательского интерфейса и проверить функциональность пользовательского интерфейса. Поэтому я пошел в направлении тестирования API с карате и тестирования пользовательского интерфейса с огурцом + селеном. Что вы думаете о подобных случаях использования? Каким должен быть подход по вашему мнению.