HY。我尝试为webHander编写测试:
statFunc
运行测试时收到错误:
引发TimeoutError('%s秒'%timeout后的操作超时)
tornado.ioloop.TimeoutError:操作在5秒后超时
答案 0 :(得分:1)
设置ASYNC_TEST_TIMEOUT
环境变量。
运行IOLoop,直到调用stop或超时为止。
如果超时,将抛出异常。默认超时为5秒;它可以使用timeout关键字参数覆盖,也可以使用ASYNC_TEST_TIMEOUT环境变量全局覆盖。 - 来自http://www.tornadoweb.org/en/stable/testing.html#tornado.testing.AsyncTestCase.wait
答案 1 :(得分:0)
您需要使用AsyncHTTPTestCase,而不仅仅是AsyncTestCase。一个很好的例子是在龙卷风的自我测试中:
您需要实现get_app
以使用您编写的RequestHandler返回应用程序。然后,做一些像:
class TestRESTAuthHandler(AsyncHTTPTestCase):
def get_app(self):
# implement this
pass
def test_http_fetch_login(self):
data = urllib.parse.urlencode(dict(username='admin', password='123456'))
response = self.fetch("http://localhost:8080//#/login", method="POST", body=data)
# Test contents of response
self.assertIn("Automation web console", response.body)
AsyncHTTPTestCase提供了方便的功能,因此您无需使用" gen.coroutine"来编写协同程序。和"收益"。
另外,我注意到你在"#"之后提取了一个带有片段的网址,请注意在现实生活中,网页浏览器在将URL发送到服务器时不包含该片段。因此,您的服务器只会将网址视为" //"而不是" //#/ login"。