使用 Tornado 进行路由测试
Route testing with Tornado
我是 Tornado 的新手,正在从事一个涉及一些相当复杂的路由的项目。在我使用过的大多数其他框架中,我已经能够隔离路由以进行测试,而无需启动服务器或做任何非常复杂的事情。我更愿意使用 pytest 作为我的测试框架,但我不确定它是否重要。
有没有办法,比如说,创建我的 tornado.web.Application
项目实例,并向其传递任意路径并断言将根据该路径调用哪个 RequestHandler
?
不,目前无法通过任何 public 界面在 Tornado 中对此进行测试(从 Tornado 4.3 版开始)。
避免启动服务器很简单,尽管它需要大量的代码:HTTPServer 和 Application 之间的接口定义明确并记录在案。更棘手的部分是另一面:没有受支持的方法来确定在调用该处理程序 is 之前将调用哪个处理程序。
出于这个原因,我通常建议通过端到端测试来测试路由。您还可以在将 URL 路由列表传递给 Tornado 之前存储它,并针对它进行测试 - "take the first regex match" 的内部逻辑很容易复制。
我是 Tornado 的新手,正在从事一个涉及一些相当复杂的路由的项目。在我使用过的大多数其他框架中,我已经能够隔离路由以进行测试,而无需启动服务器或做任何非常复杂的事情。我更愿意使用 pytest 作为我的测试框架,但我不确定它是否重要。
有没有办法,比如说,创建我的 tornado.web.Application
项目实例,并向其传递任意路径并断言将根据该路径调用哪个 RequestHandler
?
不,目前无法通过任何 public 界面在 Tornado 中对此进行测试(从 Tornado 4.3 版开始)。
避免启动服务器很简单,尽管它需要大量的代码:HTTPServer 和 Application 之间的接口定义明确并记录在案。更棘手的部分是另一面:没有受支持的方法来确定在调用该处理程序 is 之前将调用哪个处理程序。
出于这个原因,我通常建议通过端到端测试来测试路由。您还可以在将 URL 路由列表传递给 Tornado 之前存储它,并针对它进行测试 - "take the first regex match" 的内部逻辑很容易复制。