- 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"

