2013-08-10 3 views
0

내가 데리러 오는 토네이도 코드베이스에 대한 테스트를 만들려고합니다. 나는 잘 실행되도록 프로젝트를 얻었지만 내가 작성한 첫 번째 테스트는 연결 거부 오류를 얻는 것이다. 여기 토네이도 테스트에서 연결이 거부되었습니다.

코드입니다 :

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는 "나는 localhost : 5000과 이야기하려고 시도했고 그것은 나에게 분명하게 나에게 말했습니다."라고 말하는 아주 기본적인 IP 수준 진단입니다. 이는 일반적으로 a) 포트 5000에 바인드 된 서버가 없음 또는 b) 로컬 방화벽 또는 기타 권한 문제가 있음을 나타냅니다. – msw

+0

'telnet localhost 5000'명령은 응용 프로그램의 문제를 빨리 제거하는 데 도움을줍니다. 연결이 거부되면 앱이 아닙니다. – msw

답변

4

get_http_port을 덮어 쓰지 마십시오. 새 포트가있는 새 HTTP 서버가 각 테스트마다 설정되므로 설정에 있어도 매번 5000이되지는 않습니다.

관련 문제