2016-11-27 31 views
0

我有一個瓶子,將以下代碼:瓶 - 獲取查詢項與Unicode字符工作在瀏覽器中,但沒有對WebTest的

site = request.query.site 

也能正常工作從瀏覽器。所以,如果我去的網址:

http://myapp.domain/?site=füä 

網站將相等,füa

試圖模擬這種請求與WebTest的,這將導致內部瓶,其然後導致站點是空編碼誤差:

res = testapp.get("/?site=füä") 

現在視圖站點內將是一個空字符串:

site = request.query.site 

有人知道這裏發生了什麼嗎?

+0

這是Python 2還是3? – tdelaney

+0

這是Python3,但我已經解決了這個問題。謝謝! – Oz123

回答

3

這引起了我很多頭疼,所以我張貼這個爲他人的利益。 解決方案的關鍵在於我將URL從瀏覽器複製到我的測試代碼。

res = testapp.get("/?site=füä") 

瀏覽器(在我的情況下firefox 50,但也是當前瀏覽器)默默地翻譯這些字符,一切都很好。 在閱讀了關於瓶子如何處理FormsDict的更多信息之後,我可以真正確認問題出在WebTest上。多一點搜索,我發現,有一個長期存在的BUG就認爲:

quoted urls UnicodeDecodeError

爲了解決這個問題,我簡單地改變URL中的測試代碼編碼的URL:

res = testapp.get("/?site=f%C3%BC%C3%A4") 

和中提琴!問題解決了。現在網站已正確設置爲füä。我用 HTML URL Encoding Reference

經驗教訓。千萬不要在測試代碼中天真地使用unicode。

相關問題