国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Python的Flask框架中實現單元測試的教程

2020-02-23 00:48:39
字體:
來源:轉載
供稿:網友

 概要

在前面的章節里我們專注于在我們的小應用程序上一步步的添加功能上。到現在為止我們有了一個帶有數據庫的應用程序,可以注冊用戶,記錄用戶登陸退出日志以及查看修改配置文件。

在本節中,我們不為應用程序添加任何新功能,相反,我們要尋找一種方法來增加我們已寫代碼的穩定性,我們還將創建一個測試框架來幫助我們防止將來程序中出現的失敗和回滾。

讓我們來找bug

在上一章的結尾談到,我故意在應用程序中引入一個bug。接下來讓我描述一下它是什么樣的bug,然后看看當我們的程序不按照我們意愿執行的時候,它在其中又起了什么樣的影響。

應用程序的問題在于,沒有保證用戶昵稱的唯一性。用戶昵稱是由應用程序自動初始化的。我們首先會考慮使用OpenID provider給出的用戶的昵稱,然后再考慮使用Email信息中的用戶名部分作為用戶的昵稱。但如果出現重復的昵稱,則后面的用戶將無法注冊成功。更糟糕的是,在修改用戶配置的表單中,我們允許用戶任意更改他們的昵稱,但我們仍然沒有對昵稱沖突進行檢查。

當我們分析完錯誤產生時應用程序的行為之后,我們將會定位這些問題。

Flask 的調試功能

那么讓我們看看當bug被觸發時,會出現什么現象。

讓我們從創建一個嶄新的數據庫,在linux下,執行:
 

rm app.db./db_create.py

在Windows下,執行:
 

del app.dbflask/Scripts/python db_create.py
我們需要兩個OpenID的賬號來重現這個bug。當然這兩個賬號最理想的狀態是來自來個不同的擁有者,那樣可以避免他們的cookie把情況搞的更復雜。通過如下步驟創建沖突的昵稱:     用第一個賬號登陸     進入用戶信息屬性編輯頁面,將昵稱改為“dup”     登出系統     用第二個賬號登陸     修改第二個賬號的用戶信息屬性,將昵稱改為“dup”


哎喲!sqlalchemy中拋出了一個異常,來看一下錯誤信息:

lalchemy.exc.IntegrityErrorIntegrityError: (IntegrityError) column nickname is not unique u'UPDATE user SET nickname=?, about_me=? WHERE user.id = ?' (u'dup', u'', 2)

錯誤的后面是這個錯誤的堆棧信息,事實上,這是一個相當不錯的錯誤提示,你可以轉向任何框架檢查代碼或者在瀏覽器里執行正確的表達式。

這個錯誤信息相當明確,我們試圖在數據插入一個重復的昵稱,數據庫的昵稱字段是一個衛衣鍵,因此這樣的操作是無效的。
 

除了實際的錯誤,在我們手頭上還有一個次要的錯誤。如果一個用戶不注意在我們應用程序里引起了一個錯誤(這一個錯誤或者任何其他原因引起的異常),應用程序將向他/她暴漏錯誤信息和堆棧信息,而不是暴露給我們。對于我們開發者來說這是個很好的特性,但是很多時候我們不想讓用戶看到這些信息。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芮城县| 阿勒泰市| 泸溪县| 鲜城| 唐海县| 镇康县| 仙居县| 西平县| 内丘县| 许昌市| 北流市| 河西区| 静安区| 介休市| 延川县| 通海县| 武穴市| 长岭县| 观塘区| 阿坝县| 东山县| 布拖县| 沙雅县| 龙泉市| 淄博市| 新晃| 莱州市| 衡阳县| 凤冈县| 思南县| 文昌市| 寿光市| 磴口县| 棋牌| 大姚县| 西乌珠穆沁旗| 耒阳市| 申扎县| 瓦房店市| 沐川县| 昭苏县|