2016-03-01 34 views
11

我已經編寫了.tsv格式的機器人框架測試腳本來測試web-services/API。一切工作正常,直到今天(因爲機器人框架的新更新的可能),當我開始得到以下錯誤:Robot Framework測試腳本失敗,出現SSLError

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

此錯誤不斷出現在測試腳本下面的代碼:

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

我沒有得到一個詳細的回溯此錯誤是如下:

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) 

我的系統配置:

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) 

有關如何解決此問題的任何建議?

+0

當你說「可能是因爲新的更新」,你在說什麼更新?到你的服務器?去機器人?到請求模塊?爲了python?到OSX? –

+0

我更新了有問題的系統配置中提到的機器人框架庫(所有這些庫)。謝謝 –

+0

***'SSLError:(「不好握手:SysCallError(-1,'意外的EOF')」,)***沒有告訴我們太多。它看起來不是一個準確的錯誤號碼(對我來說)。你能否提供從OpenSSL的*** ['ERR_get_error'](http://www.openssl.org/docs/manmaster/crypto/ERR_get_error.html)***或*** ['SSL_get_error']( http://www.openssl.org/docs/manmaster/ssl/SSL_get_error.html)***? – jww

回答

2

你所有最新的,所以有兩種可能性:

  • 握手是不會因爲信任鏈中斷的順利進行。從底部開始並着手。你在局域網上測試這個嗎?證書是否是最新的?你能否從你的位置和其他人訪問該網站而沒有錯誤? SSL labs顯示什麼了嗎?防火牆規則怎麼樣?
  • 最近更新中有一個bug。根據我的經驗,OpenSSL報告是由連接問題造成的,而不是模糊的軟件問題 - 這兩者的可能性較小。
+0

握手工作,因爲它應該是因爲我的同事可以執行相同的操作,它適用於他們。所以我可能猜測它是因爲一些配置問題導致了這個問題。 –

+0

如果特定於自己,請檢查您的防火牆規則!這使我出來之前:( –

+0

我沒有檢查我的防火牆規則,它似乎是罰款。我也確保python有在防火牆的權利,使其在恢復模式在mac。謝謝。 –

1

嘗試安裝請求[security]而不是請求。它使用PyOpenSSL,這比OpenSSL更好:https://stackoverflow.com/a/31812342/2419215

+0

我運行了'pip install -U requests [security]'命令,並且我在命令行中得到了需求滿足的結果。它已經安裝了請求本身,但我不確定,但我確實安裝了'PyOpenSSL','ndg-httpsclient'和'pyasn1',腳本仍然失敗。謝謝 –

+0

@ fodma1「在Python 3.4+和Python 2.7.9+它不再更好了「,見[這裏](https://github.com/kennethreitz/requests/pull/2195#issuecomment-53934322) –