我正在尝试为旧的pylons
0.9.7应用程序编写单元测试。
我们遇到的问题是,很容易意外地对URL进行硬编码
我们的jinja2
模板中的路径,在有人托管之前可以正常工作
我们的应用程序使用不同的前缀(即托管它
http://localhost/foo/
而非http://localhost/
)。我
使用粘贴的默认“功能测试”设置执行此操作
为我创造。我查询每个控制器动作,并传递自定义
SCRIPT_NAME
喜欢这样:
response = self.app.get('/some/url/path',
extra_environ={'SCRIPT_NAME' : '/custom_prefix'})
然后我使用beautifulsoup
来解析文档,迭代所有文档
具有href
属性或src
属性的标记,并确保
它以'/ custom_prefix'开头。
这是事情变得奇怪的地方:当我们传递绝对路径时
我们的模板中pylons.url
(实际上是routes.util.URLGenerator
),如下所示:
{{ h.stylesheet_link(h.url('/css/style.css')) }}
......它完美无缺。但是,当我们使用关键字调用pylons.url
时
像这样的论点:
{{ h.link_to('Home', h.url(controller='person', action='home')) }}
...未插入前缀。但是,url()
功能有效
正确运行时正确使用(即使用mod_wsgi
或
pastedeploy
)非空SCRIPT_NAME
。
我想我错过了关键的一步,但我想不出它是什么。