我正在用Flask编写用Python编写的API的单元测试。具体来说,我想测试我的路由的错误处理工作正常,所以我想故意构建缺少参数的URL。我想通过使用url_for()来避免硬编码,但是不允许缺少参数,那么如何构建错误的URL?如何在单元测试中故意使用url_for()构建错误的URL?
0
A
回答
2
说到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']?
然而,这不存在于任何路线参数本身将被简单转化成一个查询字符串参数:
print(url_for('favorite_color', color='blue', no='yellooooowwww!'))
/favorite/color/blue?no=yellooooowwww%21
所以,当你问一个缺失参数中的URL,什么你问的是一个URL塔t没有路线。您无法为此创建URL,因为flask正在尝试为存在的端点构建参数。
您可以做的最好的是使用超出界限的参数值,例如,
url_for('favorite_color', color='toaster')
烤面包机不是真正的颜色,因此应该返回404
。缺失的参数在不同的上下文中也可能有意义,因此您必须对此进行说明。 如果你真的想缺少参数,你真正想要做的是使用查询字符串参数。但如果你确定服务器上不存在的URL实际上并不存在于你的服务器上,那么你可以这样做:
url_for('favorite_color', color='fnord').replace('/fnord', '')
+0
我想我最终使用了越界值,例如'url_for('api.status',id ='')'来测试不好的请求处理。感谢您的解释。 – Eno
相关问题
- 1. 如何单元测试模板代码故意编译错误
- 2. Laravel 5.3使用php单元测试构建单元测试
- 3. Swift单元测试和“构建测试”错误
- 4. 如何故意测试交易中的错误?
- 5. Android:单元测试:如何使用SensorManager创建单元测试?
- 6. 使用单元测试构建TFS2010
- 7. 如何构建单元测试
- 8. 如何单元测试构建脚本?
- 9. 单元测试构建
- 10. 故障使用单元测试
- 11. 如何增强openjpa实体在TeamCity构建中的单元测试中使用
- 12. 使用QuickCheck测试故意错误情况
- 13. Angular:如何在单元测试中调试注入错误
- 14. 单元测试WCF故障
- 15. 单元测试使URL调用的servlet
- 16. 如何单元测试结构构造
- 17. 单元测试建议 - 如何单元测试您的.asmx
- 18. 单元测试TypeInitializationException错误
- 19. 单元测试错误扔
- 20. 单元测试 - 错误
- 21. Angularjs单元测试错误
- 22. OCMock单元测试错误
- 23. 在单元测试中构建核心数据堆栈的错误
- 24. 如何用laravel中的php单元测试验证错误5
- 25. Rails 3中的单元测试错误
- 26. 如何在使用嵌套测试类时对单元测试构造函数进行单元测试
- 27. 如何使用jmockit做单元测试单元测试
- 28. 在VS.NET 2010中构建C++单元测试项目时出现链接错误
- 29. 如何单元测试/模拟requests.get(URL)
- 30. ui.bootstrap打破我的单元测试意外的结果错误?
你是在说这些? =参数'或'/这些/参数/ 42 /名称'? –
所以它是一个带有URL参数的GET,例如/ status/ – Eno