我正在用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