Tornado hello_world测试返回599

时间:2016-07-19 16:10:23

标签: python tornado

我正在使用Tornado 4.4和CPython 2.7。

我复制了:

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文档/代码。

2 个答案:

答案 0 :(得分:0)

您似乎错误地缩进了hello.py中的代码。这条线不应该缩进:

def make_app():

也就是说,在Tornado文档make_app中是一个模块级函数,但在您的代码中,您已将其作为MainHandler的成员。

答案 1 :(得分:0)

我忘了提到我在VirtualBox / Ubuntu 14.04中执行此测试。事实证明这非常重要,因为当我直接在OSX或VirtualBox / Debian Jessie中运行时,我没有得到599。我仍然感到困惑,因为Ubuntu 14.04来自Jessie,我期待类似的行为。