Question

J'ai écrit une commande de gestion Django (version 1.3, malheureusement) pour me connecter à BrowserStack avec Selenium et je vais l'utiliser pour exécuter des tests d'intégration.(J'ai dû écrire une commande de gestion personnalisée pour contourner le fait que nous utilisons AskBot sur ce site et cela gâche le framework de test Django de manière amusante ;sinon j'utiliserais simplement le framework de test.)

L'essentiel du script est ici https://gist.github.com/cellofellow/7491221.Il s'agit d'un portage d'un script antérieur qui venait d'exécuter unittest directement sans aucun contexte Django.

Ce qui se passe, c'est que lors de l'exécution, j'obtiens un traçage comme celui-ci :

./manage.py browserstack signup
Browser: IE
Browser Version: 10.0
Operating System: Windows
OS Version: 7

E
======================================================================
ERROR: runTest (apps.common.management.commands.browserstack.SignUpBasic)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/jgardner/izeni/doterra_pro/apps/common/management/commands/browserstack.py", line 46, in setUp
    desired_capabilities=self.caps)
  File "/home/jgardner/.virtualenvs/doterra_pro/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 71, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/home/jgardner/.virtualenvs/doterra_pro/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 113, in start_session
    'desiredCapabilities': desired_capabilities,
  File "/home/jgardner/.virtualenvs/doterra_pro/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 162, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/home/jgardner/.virtualenvs/doterra_pro/local/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 355, in execute
    return self._request(url, method=command_info[0], data=data)
  File "/home/jgardner/.virtualenvs/doterra_pro/local/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 402, in _request
    response = opener.open(request)
  File "/usr/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 442, in error
    result = self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 897, in http_error_401
    url, req, headers)
  File "/usr/lib/python2.7/urllib2.py", line 872, in http_error_auth_reqed
    response = self.retry_http_basic_auth(host, req, realm)
  File "/usr/lib/python2.7/urllib2.py", line 885, in retry_http_basic_auth
    return self.parent.open(req, timeout=req.timeout)
  File "/usr/lib/python2.7/urllib2.py", line 404, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 422, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1214, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1187, in do_open
    r = h.getresponse(buffering=True)
  File "/usr/lib/python2.7/httplib.py", line 1045, in getresponse
    response.begin()
  File "/usr/lib/python2.7/httplib.py", line 409, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.7/httplib.py", line 365, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/lib/python2.7/socket.py", line 476, in readline
    data = self._sock.recv(self._rbufsize)
timeout: timed out

----------------------------------------------------------------------
Ran 1 test in 5.201s

FAILED (errors=1)

Dans BrowserStack, une instance est démarrée, mais comme quoi qu'il arrive ensuite, elle ne peut pas se connecter, elle s'exécute simplement pendant environ une minute, puis se termine.

Le script à partir duquel il a été porté n'avait pas ce problème.Qu'est-ce qui peut en être la cause ?

Était-ce utile?

La solution

Il s'est avéré que je devais simplement définir socket.setdefaulttimeout(60) Il y a des dizaines d'appels vers socket.setdefaulttimeout dans cette base de code, à la fois dans les dépendances et dans notre propre code, alors qui sait sur quoi il a été réellement défini.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top