Logo Light
Published on

SoapUI - Groovy cheatsheet

Seznam užitečných příkazů

Článek obsahuje stručný manuál pro použití Groovy skriptů v SoapUI.


1. Načtení obsahu responsu

def response = messageExchange.responseContent

Načtení responsu z konkrétního kroku:

def email = context.expand('${YourStepName#Response}')

2. Načtení obsahu requestu

def request = context.expand('${request}')

Načtení requestu z konkrétního kroku:

def request = context.expand('${YourStepName#Request}')

3. Parsování JSONu

import groovy.json.JsonSlurper

def json = new JsonSlurper().parseText(response)
println json.email

4. Nastavení property

Nastavení property v TestCase nebo TestSuite:

testRunner.testCase.setPropertyValue("myProperty", "Hello")

Načtení property z TestCase:

def value = testRunner.testCase.getPropertyValue("myProperty")

5. Asserty

assert json.token != null : "Token is missing"
assert json.email == "user@example.com" : "Email does not match"

assert json.containsKey('id') : "ID field is missing"
assert json.id.toString().isNumber() : "ID is not a number"

assert json.email ==~ /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ : "Invalid email format"

def validRoles = ["admin", "user", "guest"]
assert validRoles.contains(json.role) : "Unexpected role: ${json.role}"

// délka pole
assert responseJson.size() == 2

6. Průchod JSON objektem

json.each { key, value ->
  println "$key: $value"
}

7. Podmínka pro nalezení objektů uvnitř pole

def responseUser = responseJson.find( user -> user.id == id_01.toInteger()) // když je id_01 ze SoapUI property, je třeba ho převést na číslo

7. Logování

log.info "This is an info message"
log.error "Something went wrong!"

8. Zpracování XML

def xml = new XmlSlurper().parseText(response)
assert xml.name == "John"

Příklad – porovnání property v requestu a responsu

import groovy.json.JsonSlurper

def req = context.expand('${request}')
def res = messageExchange.responseContent

def requestJson = new JsonSlurper().parseText(req)
def responseJson = new JsonSlurper().parseText(res)

assert responseJson.email == requestJson.email : "Email does not match"