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’.

clip_image002

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).

image

Entrez ensuite le code du script :

image

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é :

image

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 🙂

5 réflexions au sujet de « soapUI : pré-remplir les champs d’une requête »

  • 19 janvier 2010 à 16 h 38 min
    Permalink

    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.

  • 22 janvier 2010 à 9 h 38 min
    Permalink

    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

  • Ping : soapUI : tests de charge de Web Services | Blog Objet Direct

  • 10 juin 2010 à 14 h 56 min
    Permalink

    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.

  • 5 octobre 2016 à 19 h 22 min
    Permalink

    Bonjour,
    je vous remercie pour ce tuto très utile.
    Malheureusement impossible de le faire fonctionner chez moi: les Request ne sont pas modifiées.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *