Как мне запустить внешний файл в soapui, взять вывод и установить его в качестве заголовка - PullRequest
0 голосов
/ 20 мая 2019

Я бы хотел запустить внешний файл .bat, используя скрипт groovy в soapUI.также хотел бы использовать выходные данные, сгенерированные из внешнего файла, в качестве значения для заголовка

, вот сценарий, который я использую для запуска файла bat

String line
def p = "cmd /c C:\\Script\\S1.bat".execute()
def bri = new BufferedReader (new InputStreamReader(p.getInputStream()))
while ((line = bri.readLine()) != null) {log.info line}

вот содержимоефайла летучей мыши

java -jar SignatureGen.jar -pRESOURCE -nRandomString -mGET -d/api/discussion-streams/metadata -teyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJjbGllbnQiOiIxIiwicm9sZSI6IllGQURNSU4iLCJleHAiOjI3NTgzMjU2MDIsInRpIjo3MjAwNiwiaWF0IjoxNTU4MzI1NjAyLCJwZXJzb24iOiI1In0.bbci7ZBWmPsANN34Ris9H0-mosKF2JLTZ-530Rex2ut1kjCwprZr_196N-K1alFBH_A9pbG0MPspaDOnvOKOjA

1 Ответ

1 голос
/ 20 мая 2019

следующий код:

def p = "ls -la".execute()

def err = new StringBuffer()
def out = new StringBuffer()
p.waitForProcessOutput(out, err)

p.waitForOrKill(5000)
int ret = p.exitValue()

// optionally check the exit value and err for errors 

println "ERR: $err"
println "OUT: $out"

// if you want to do something line based with the output
out.readLines().each { line -> 
  println "LINE: $line"
}

основан на Linux, но переводится в Windows, просто заменив ls -la на вызов файла bat cmd /c C:\\Script\\S1.bat.

Это выполняет процесс, вызывает waitForProcessOutput , чтобы убедиться, что процесс не блокируется, и что мы сохраняем потоки stdout и stderr процесса, а затем ждем, пока процесс завершит использование waitForOrKill .

После waitForOrKill процесс либо был прерван, потому что он занял слишком много времени, либо завершился нормально. В любом случае, переменная out будет содержать выходные данные команды. Чтобы выяснить, была ли ошибка во время выполнения файла bat, вы можете проверить переменные ret и err.

Я выбрал waitForOrKill тайм-аут наугад, настройте в соответствии с вашими потребностями. Вы также можете использовать waitFor без тайм-аута, который будет ожидать завершения процесса, но обычно лучше установить некоторый тайм-аут, чтобы ваша команда не выполнялась бесконечно.

...