Python 在棱锥视图测试中获取当前路由
我正在尝试测试金字塔中的一个视图,它使用Python 在棱锥视图测试中获取当前路由,python,testing,pyramid,Python,Testing,Pyramid,我正在尝试测试金字塔中的一个视图,它使用request.current\u route\u path() 我将使用基本的测试设置,非常直接地从文档: from ..views.auth import signup ... class ....: def test_signup_view(self): with testing.testConfig(): signup(testing.DummyRequest(self.session)) 我使用的
request.current\u route\u path()
我将使用基本的测试设置,非常直接地从文档:
from ..views.auth import signup
...
class ....:
def test_signup_view(self):
with testing.testConfig():
signup(testing.DummyRequest(self.session))
我使用的配置类似于:
但这会导致ValueError:当前请求不匹配任何路由
我将path=“/signup”
参数添加到DummyRequest
,但最终还是出现了相同的错误
我的路由基于URI,而不是基于资源,因此测试的具体路由是:
def includeme(config):
...
config.add_route('signup', '/signup')
...
如何解决这个问题?通过
DummyRequest
模拟当前路由路径并不十分容易,因为它依赖于一个名为matched\u route
的object附加到它的matched\u route
对象,因为它正在执行请求。matched\u route.name
来获取路由名称,从而获得生成路由所需的元数据路线。当请求实际与路由匹配时,路由器通常会附加此对象
我认为你有3个选择:
使用返回所需内容的current\u route\u path
版本完全模拟请求对象上的函数。例如request.current\u route\u path=lambda*a,**kw:'/path'
。如果这不是你测试的重点,那就太好了
从内省器中拉出IRoute
对象,并将其附加到虚拟请求。这需要学习内省api并从中提取它,然后将其设置为request.matched_route=iroute_object
使用经过路由器的功能测试,在这一点上,金字塔将为您正确设置
通过DummyRequest
模拟当前路由路径并不十分容易,因为它依赖于一个名为matched\u route
的IRoute对象来获取路由名称以及生成路由所需的元数据。当请求实际与路由匹配时,路由器通常会附加此对象
我认为你有3个选择:
使用返回所需内容的current\u route\u path
版本完全模拟请求对象上的函数。例如request.current\u route\u path=lambda*a,**kw:'/path'
。如果这不是你测试的重点,那就太好了
从内省器中拉出IRoute
对象,并将其附加到虚拟请求。这需要学习内省api并从中提取它,然后将其设置为request.matched_route=iroute_object
使用经过路由器的功能测试,在这一点上,金字塔将为您正确设置
你指的是哪些文件?请提供一个链接。还请在testing.testConfig
@StevePiercy中包含您的路线配置以及如何加载该配置。我正在关注哪些文档?请提供一个链接。还请在下面的testing.testConfig
@StevePiercy中包含您的路由配置以及如何加载该配置
def includeme(config):
...
config.add_route('signup', '/signup')
...