2013-08-10 5 views
0

Я пытаюсь создать тесты для базы кода Tornado, которую я собираю. Я хочу, чтобы проект работал нормально, но первый тест, который я написал, получает сообщение об ошибке отказа от соединения.Связь отказалась от теста Tornado

Вот код:

import unittest, os, os.path, sys, urllib 
import tornado.options 
from tornado.options import options 
from tornado.testing import AsyncHTTPTestCase 


APP_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 
sys.path.append(os.path.join(APP_ROOT, '..')) 
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))) 

from main import Application 

app = Application() 

def clear_db(app=None): 
    os.system("mysql -u user --password=pw --database=testdb < %s" % (os.path.join(APP_ROOT, 'db', 'schema.sql'))) 

class TestHandlerBase(AsyncHTTPTestCase): 
    def setUp(self): 
     clear_db() 
     super(TestHandlerBase, self).setUp() 

    def get_app(self): 
     return app 

    def get_http_port(self): 
     return 5000 

class TestRootHandler(TestHandlerBase): 
    def test_redirect(self): 
     response = self.fetch(
      '/', 
      method='GET', 
      follow_redirects=False) 
     print response 
     self.assertTrue(response.headers['Location'].endswith('/login')) 

Это ответ я получаю:

HTTPResponse(_body=None, buffer=None, code=599, 
    effective_url='http://localhost:5000/', 
    error=HTTPError('HTTP 599: [Errno 61] Connection refused',), 
    headers={}, reason='Unknown', 
    request=<tornado.httpclient.HTTPRequest object at 0x10c363510>, 
    request_time=0.01304006576538086, time_info={}) 

Любая идея о том, что может быть причиной ошибки? Есть ли какой-то шаг, который мне не хватает, чтобы все работает для теста? Благодаря!!!

+0

ECONNREFUSED - довольно простая диагностика уровня IP, в которой говорится: «Я пытался поговорить с localhost: 5000, и он утвердительно сказал мне уйти». Обычно это означает, что существует а) нет сервера, связанного с портом 5000 или b) возникает проблема локального межсетевого экрана или других разрешений. – msw

+0

Команда 'telnet localhost 5000' быстро поможет вам исключить проблему с вашим приложением. Если вы получите отказ от этого соединения, это не ваше приложение. – msw

ответ

4

Не переопределяйте get_http_port. Для каждого теста настраивается новый HTTP-сервер с новым портом, поэтому он не будет 5000 каждый раз, даже если это то, что у вас есть в ваших настройках.

Смежные вопросы