2016-05-05 10 views
2

Ich habe 50+ Tests in meinem aktuellen SoapUI-Arbeitsbereich. Ich muss bei all diesen Tests einen neuen Parameter auf Projektebene hinzufügen. Gibt es eine Möglichkeit, dies mit der groovy Konsole in SoapUI zu tun?Groovy verwenden Projekteigenschaften in SoapUI erstellen

Zum Beispiel:

testRunner.testCase.testSuite.project.setPropertyValue("SuperMan",("SuperMan")); 

ich diese laufen kann eine Eigenschaft innerhalb des aktuellen Arbeitsprojekt zu erstellen. Gibt es eine Möglichkeit, das ich unter allen Projekten auf meinem aktuellen Arbeitsbereich erstellen kann?

Vielen Dank im Voraus.

Antwort

3

Ja, wir können das tun, aber es ist ein wenig schwierig.

Weg, dies zu tun:

  1. ein leeres generisches Projekt in soapui erstellen, leere Testsuite hinzufügen, fügen Leeren Testfall
  2. Im Testfall groovigem Scriptschritt hinzufügen
  3. Nun ist diese Paste groovy Code

    for(project in com.eviware.soapui.SoapUI.workspace.projectList) {  
    if(project.open && project.name != testRunner.testCase.testSuite.project.name){ 
         project.setPropertyValue("TestProperty","TestValue");  
    }  
    } 
    

Führen Sie den groovigen Schritt aus, und Sie erhalten die Eigenschaft auf Projektebene hinzugefügt.

Bitte markieren Sie diese als richtige Antwort, wenn dies Ihr Problem löst.

+0

Thanks :), die – Dighate

3

Mit Ihrem testRunner Zugriff brauchen Sie nur eine Ebene mehr workspace. Von hier aus können Sie projects Karte zugreifen und jedes Projekt iterieren Hinzufügen der Eigenschaft:

testRunner.testCase.testSuite.project.workspace.projects.each{ key, proj -> 
    proj.setPropertyValue('superman','superman') 
} 

Dieser Code nicht die Eigenschaft, auf geschlossene Projekte im Arbeitsbereich hinzufügt, aber nicht nicht darauf zugreifen.

Alternativ als @Rao auf seinem Kommentar vorschlagen ist es möglich, Standard it Objekt Iterator und Zugriff auf die value statt definieren key, proj -> auf each zu verwenden:

testRunner.testCase.testSuite.project.workspace.projects.each{ 
    it.value.setPropertyValue('superman','superman') 
} 

Ich ziehe den ersten Ansatz für Klarheit.

Hoffe, dass es hilft,

+1

gut funktioniert, es funktioniert. 'Schlüssel' mag nicht wirklich benötigt werden, obwohl es keinen Schaden gibt. – Rao

+1

@Rao Ich benutze 'key, proj ->' aus Gründen der Übersichtlichkeit, aber natürlich kann das OP den Standard 'it' verwenden und auf' it.value' zugreifen, um 'propertyValue'':) 'zu setzen. Danke für den Kommentar!. – albciff

+0

Was ich meine, war, nur 'proj' ist genug, weil 'key' übergeben und nicht verwendet wird. Alle Looks, die Sie aktualisiert haben. Vielen Dank für Ihre Zeit. – Rao

Verwandte Themen