2016-07-19 1 views
0

Я использую Tornado 4.4 с CPython 2.7.Tornado hello_world test возвращает 599

Я скопировал:

import tornado.ioloop 
import tornado.web 

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     self.write("Hello, world") 

def make_app(): 
    return tornado.web.Application([ 
     (r"/", MainHandler), 
    ]) 

if __name__ == "__main__": 
    app = make_app() 
    app.listen(8888) 
    tornado.ioloop.IOLoop.current().start() 

от http://www.tornadoweb.org/en/stable/guide/structure.html до hello.py, а затем:

import hello 

class TestHelloApp(AsyncHTTPTestCase): 
    def get_app(self): 
     return hello.make_app() 

    def test_homepage(self): 
     response = self.fetch('/') 
     self.assertEqual(response.code, 200) 
     self.assertEqual(response.body, 'Hello, world') 

от http://www.tornadoweb.org/en/stable/testing.html к test_hello.py

И когда я бегу:

python -m tornado.test.runtests test_hello

Я получаю:

AssertionError: 599 != 200.

Либо я чего-то упускаю, либо документы/код Tornado необходимо обновить.

ответ

0

Похоже, вы ошибочно отшлифовали код в hello.py. Эта линия не должна быть отступ на всех:

def make_app(): 

То есть, в документации Торнадо make_app является функцией уровня модуля, но в вашем коде, вы сделали его членом MainHandler.

+0

Мой плохой, спасибо Джесси за указание на это. Я все еще получаю это 599. – pdx9

0

Я забыл упомянуть, что я выполнял этот тест в VirtualBox/Ubuntu 14.04. И, оказывается, это очень важно, так как я не получаю этого 599, когда запускаю его непосредственно в OSX или VirtualBox/Debian Jessie. Я все еще недоумеваю, хотя, поскольку Ubuntu 14.04 происходит от Джесси, и я ожидал подобного поведения.

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