soapUI : pré-remplir les champs d’une requête
Suite de mon tutorial sur soapUI, voyons cette fois-ci comment pré-remplir certains champs d’une requête. Par exemple, un login et un password nécessaire pour se connecter.
Si vous avez une série de requêtes dans votre Test case, il est préférable de créer un script qui se chargera de vous pré-remplir ces champs plutôt que de le faire à la main
Il faut créer un nouveau « step » nommé ‘Groovy Script’.
Voici un exemple de code qui pré-rempli les champs ‘login’ et ‘password’. Ces valeurs doivent être déclarées et initialisées dans l’onglet « Custom Properties » du projet (il s’affiche en cliquant sur le nom du projet).
Entrez ensuite le code du script :
Un petit Copier-(Réfléchir*)-Coller du code suivant simplifiera le travail ! (* © F.D.)
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
//variables definitions
def login = '${#Project#login}'
def password = '${#Project#password}'
//Retrieves all TestSteps of the current testCase
log.info("* " + testRunner.testCase.name )
def testStepList = testRunner.testCase.getTestStepList()
testStepList.each{currentTestStep->
if (currentTestStep.name != "Inits fields") { //ici liste des steps que le script ne doit pas modifier
log.info(" \\-- " + currentTestStep.name )
def holder = groovyUtils.getXmlHolder( currentTestStep.name+"#Request" )
log.info(" " + 'holder' )
holder.namespaces["ns"] = "http://schemas.xmlsoap.org/soap/envelope/"
//Inits values of the current testStep
log.info(" " + 'login' )
holder.setNodeValue("//ns:Body/*/login", login)
log.info(" " + 'password' )
holder.setNodeValue("//ns:Body/*/password", password)
//Updates the change
holder.updateProperty()
}
}
'Script OK'
Voici la requête une fois le script exécuté :
Note : pour éviter de faire un copier-coller du code à chaque Test case, il est possible de cloner ce « step » et le déplacer dans un autre Test case
Bonjour,
Merci pour ces mini tutos super utiles !
Cependant j’ai une question :
Est-il possible de recuperer les données situés dans « TestRequest Properties » ?
J’essai de récuperer dans un dataSink le nom du Webservice(ou interface) et de l’opération lancé auparavant.
Merci encore.
Bonjour,
Si tu veux récupérer les properties que tu as associés à ton TestRequest (je ne suis pas sûr si tu fais référence au ‘TestCase’ ou au ‘TestStep’ dans SoapUI)
Donc au lieu d’écrire ‘${#Project#login}’ comme moi,
il te faudra écrire :
#TestCase# – references a TestCase property in the containing TestCase
ou
[TestStep name]# – references a TestStep property within the current TestCase
selon le cas.
Si tu veux retrouver les différents scopes de properties, voila la documentation SoapUi qui aborde le sujet :
Le paragraphe ‘Property Expansion in soapUI‘ : http://www.soapui.org/userguide/properties.html
Désolé pour la réponse tardive
Edit:
Je viens de tomber sur la documentation concernant les DataSink, peut-être qu’elle pourra t’aider :
http://www.soapui.org/userguide/functional/datasinkstep.html
Bonjour,
Je me permets de vous ecrires, j’ai intergrer une equipe d’etude est de devellopement, et je suis sense à faires des tests de cherge avec soapui, existe des livers pour debutant, afin d’avance dans mes tests pour que je puisse analyser et interpreter les sortie de mes entrees.
merci par avance.