2014-10-22 9 views

risposta

12

Impostare il timeout socket su 300000 millisecondi. SoapUI Documentation

+1

applt per tutte le richieste/risposte in soapui ma voglio solo per una prova – Cherry

+2

Se il timeout non è impostato. Qual è il timeout predefinito? –

+2

60 secondi è il valore predefinito. – gnaanaa

4

Opzioni TestCase ha un'impostazione di timeout del socket per quel test. Non è possibile impostare questo per un solo passaggio.

+0

Grazie, sono stato in grado di impostare * timeout * per un test case :) – Zeeshan

4

Come altre risposte dice che non è possibile impostare il timeout del socket per un TestStep, tuttavia è possibile fare il trucco con un TestStep e groovy TestStep. Si può fare a fare i passi successivi:

  1. Creare il TestStep all'interno del vostro TestCase e disattivarla perché si eseguirlo dal groove.
  2. Creare un Groovy testStep che cambierà il timeout del socket globale prima di eseguire testStep e di impostare nuovamente il valore predefinito dopo l'esecuzione utilizzando com.eviware.soapui.SoapUI class.

Il codice groovy è possibile utilizzare è mostrato qui sotto:

import com.eviware.soapui.SoapUI 
import com.eviware.soapui.settings.HttpSettings 
import com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus 

// get the settings 
def settings = SoapUI.getSettings(); 
// save the possible previous timeout 
def bk_timeout = settings.getString(HttpSettings.SOCKET_TIMEOUT,""); 
// set the new timeout... in your case 5 minutes in miliseconds 
settings.setString(HttpSettings.SOCKET_TIMEOUT,"300000"); 
// save the new settings 
SoapUI.saveSettings(); 

// get the testStep by name 
def testStep = testRunner.testCase.getTestStepByName('Test Request') 
// run it 
def result = testStep.run(testRunner, context) 
if(result.status == TestStepStatus.OK) 
{ 
    // ... if all ok  
} 

// when finish set the timeout to default value again 
settings.setString(HttpSettings.SOCKET_TIMEOUT, bk_timeout) 
SoapUI.saveSettings() 

tuo testCase volontà assomiglia:

enter image description here

notare che se si vuole verificare se modificare le impostazioni attraverso groovy funziona come previsto puoi provare a modificare le proprietà e controllare se il file delle preferenze SOAPUI è cambiato in $USER_HOME\soapui-settings.xml e (evidentemente per testarlo non eseguire nuovamente il backup del valore originale come nell'esempio :)).

+0

'che cambierà il timeout globale del socket' - sembra che influisce su tutto il progetto soapui. Voglio dire che se ci sono altri test in esecuzione in parallelo, essi "vedranno" il timeout globale modificato. Ad esempio, quando diversi casi di test contengono quel codice, possono impostare il timeout globale in modo sincrono e per alcuni di essi può essere più piccolo del necessario. Potrebbe essere meglio impostare il timeout di TestCase come suggerito da [SiKing] (http://stackoverflow.com/a/26510622/1251549)? – Cherry

+0

Nella tua domanda non ci sono requisiti per eseguire test in parallelo, ecco perché ti mostro una possibile soluzione per farlo con le proprietà globali. Tuttavia, se è presente un timeout del socket in livello testCase, penso che sia possibile creare uno script groovy simile modificando questa proprietà. Lo controllo, se esiste aggiorno la mia risposta. – albciff

2

Ho trovato un modo per impostare il timeout del socket testCase.

nello script di setup del testCase utilizzare il seguente codice:

testRunner.testCase.settings.setString("[email protected]_timeout","10000") 

Tutti i passaggi all'interno della testCase saranno interessati da questo valore.

Il valore globale SOCKET_TIMEOUT non è interessato da questo.

Problemi correlati