我正在使用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文档/代码。
答案 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,我期待类似的行为。