2024-03-29 02:38:40 发布
网友
我正在用Flask为用Python编写的API编写单元测试。具体来说,我想测试我的路由的错误处理是否正常工作,所以我想故意构建缺少参数的url。我想通过使用url \u for()避免硬编码,但这不允许缺少参数,所以如何构建错误的url?你知道吗
当涉及到url_for时,它会生成两种url。如果有命名的路由,比如
url_for
@app.route('/favorite/color/<color>') def favorite_color(color): return color[::-1]
则URL参数是必需的:
url_for('favorite_color') BuildError: Could not build url for endpoint 'favorite_color'. Did you forget to specify values ['color']?
但是,路由本身中不存在的任何参数都将简单地转换为querystring参数:
print(url_for('favorite_color', color='blue', no='yellooooowwww!')) /favorite/color/blue?no=yellooooowwww%21
因此,当您请求一个缺少参数的URL时,您需要的是一个没有路由的URL。您无法为此构建URL,因为flask正在尝试为存在的终结点构建参数。你知道吗
最好的方法是使用超出界限的参数值,例如
url_for('favorite_color', color='toaster')
烤面包机不是真的颜色,因此应该返回404。缺少的参数在不同的上下文中也可能有意义,因此您必须对此进行说明。 如果您真的想有丢失的参数,您真正想做的是使用querystring参数。但是,如果您执意要确保服务器上不存在的URL实际上不存在于服务器上,那么您可以这样做:
404
url_for('favorite_color', color='fnord').replace('/fnord', '')
当涉及到
url_for
时,它会生成两种url。如果有命名的路由,比如则URL参数是必需的:
但是,路由本身中不存在的任何参数都将简单地转换为querystring参数:
因此,当您请求一个缺少参数的URL时,您需要的是一个没有路由的URL。您无法为此构建URL,因为flask正在尝试为存在的终结点构建参数。你知道吗
最好的方法是使用超出界限的参数值,例如
烤面包机不是真的颜色,因此应该返回
404
。缺少的参数在不同的上下文中也可能有意义,因此您必须对此进行说明。 如果您真的想有丢失的参数,您真正想做的是使用querystring参数。但是,如果您执意要确保服务器上不存在的URL实际上不存在于服务器上,那么您可以这样做:相关问题 更多 >
编程相关推荐