2016-03-01 36 views
11

Ho scritto script di test framework robot nel formato .tsv per testare i servizi Web/API. Tutto stava funzionando benissimo fino ad oggi (probabilmente a causa delle nuove versioni di quadro robot) quando ho iniziato a ottenere il seguente errore:Gli script di test di Robot Framework falliscono con SSLError

SSLError: ("bad handshake: SysCallError(-1, 'Unexpected EOF')",)

Questo errore continua a comparire per il seguente codice nel script di test:

${headers}= Create Dictionary Content-Type application/json Accept application/json 
RequestsKeywords.Get Request httpbin ${url} headers=${headers} //ERROR SHOWS FOR THIS STATEMENT 

ho avuto la traceback estesa di questo errore, che è la seguente:

Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/RequestsLibrary/RequestsKeywords.py", line 298, in get_request 
    session, uri, params, headers, redir, timeout) 
    File "/Library/Python/2.7/site-packages/RequestsLibrary/RequestsKeywords.py", line 801, in _get_request 
    cookies=self.cookies) 
    File "/Library/Python/2.7/site-packages/requests/sessions.py", line 480, in get 
    return self.request('GET', url, **kwargs) 
    File "/Library/Python/2.7/site-packages/requests/sessions.py", line 468, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/Library/Python/2.7/site-packages/requests/sessions.py", line 576, in send 
    r = adapter.send(request, **kwargs) 
    File "/Library/Python/2.7/site-packages/requests/adapters.py", line 447, in send 
    raise SSLError(e, request=request) 

la mia configurazione di sistema:

Mac OSX (10.11.3) 
Python (2.7.10) 
openssl (1.0.2f) 
requests (2.9.1) 
robotframework (3.0) 
robotframework-httplibrary (0.4.2) 
robotframework-requests (0.4.4) 
robotframework-ride (1.5.2.1) 
robotframework-sshlibrary (2.1.2) 
pyOpenSSL (0.15.1) 

Qualche suggerimento su come risolvere questo problema?

+0

Quando si dice "probabilmente a causa dei nuovi aggiornamenti", di quali aggiornamenti si sta parlando? Al tuo server? Per robot? Al modulo richieste? Per pitone? A OSX? –

+0

Ho aggiornato le librerie di robot framework (tutte) citate nella configurazione di sistema in questione. Grazie –

+0

*** 'SSLError: (" brutta stretta di mano: SysCallError (-1, 'EOF inattesa') ",)' *** non ci sta dicendo molto. Sembra che non sia un numero di errore preciso (per me). Puoi fornire l'errore restituito da OpenSSL's *** ['ERR_get_error'] (http://www.openssl.org/docs/manmaster/crypto/ERR_get_error.html) *** o *** [' SSL_get_error'] (http://www.openssl.org/docs/manmaster/ssl/SSL_get_error.html)***? – jww

risposta

2

siete tutti fino ad oggi, quindi non c'è due possibilità:

  • La stretta di mano non sta andando liscio a causa di una rottura della catena di attendibilità. Inizia dal basso e lavora. Stai testando questo su una rete locale? Il certificato è aggiornato? Puoi accedere al sito dalla tua posizione e da altri senza un errore? SSL labs mostrando qualcosa? E riguardo le regole del firewall?
  • C'è un bug nel recente aggiornamento. I rapporti OpenSSL nella mia esperienza sono causati da problemi di connessione piuttosto che da problemi software oscuri: questa è la minore probabilità dei due.
+0

handshake funziona come dovrebbe essere perché i miei colleghi possono eseguire la stessa operazione e funziona per loro. Quindi probabilmente lo indovino a causa di qualche problema di configurazione che sta creando questo problema. –

+0

Controlla le regole del tuo firewall se è specifico per te! ( –

+0

Ho controllato le mie regole del firewall e sembra che vada bene, inoltre ho fatto in modo che Python avesse i diritti nel firewall abilitandolo in modalità di ripristino in mac. Grazie. –

1

Provare a installare le richieste [sicurezza] invece di richieste. Utilizza PyOpenSSL, che è migliore di OpenSSL: https://stackoverflow.com/a/31812342/2419215

+0

Ho eseguito il comando 'pip install -U requests [security]', e ho ottenuto il risultato soddisfatto dei requisiti nella riga di comando. è già installato con le richieste stesse, anche se non ne sono sicuro, ma ho installato 'PyOpenSSL',' ndg-httpsclient' e 'pyasn1' e lo script non riesce ancora. Grazie –

+0

@ fodma1" Su Python 3.4+ e Python 2.7.9+ non è più meglio ", vedi [qui] (https://github.com/kennethreitz/requests/pull/2195#issuecomment-53934322) –