1: 作用: 對測類,方法,函數進行測試。
2: 單元測試是測試的最小機關
3: 由于django的特殊性,通過接口測試單元。因為django中的每個單元都是在類視圖中。
4: 單元測試的好處:
消除低級錯誤 減少Bug, 消除低級Bug 提高代碼品質(測試後快速優化)
Django環境 1: 配置檔案mysql設定字元集編碼為utf-8 2: 資料庫的使用者最好是用root,因為測試過程中會出現自動建臨時庫的操作。
每個應用自帶test.py 每個類必須繼承django.test.TestCase 每個類可以具備一個前置和後置方法 測試方法的名稱必須以test開頭
注意: django執行測試用例時,每次都會先執行setUp方法,最後必然執行tearDown方法。比如上面的就會執行兩次setUp和兩次tearDown。
1: 執行所有的Test檔案:
2: 運作某個app下面的所有的測試用例:
3: 運作某個指定的測試用例:(最常用)
4: 運作某個指定測試用例的某個類:
5: 運作某個指定測試用例的某個類中的方法:
1: Django的TestCase繼承了Python的unittest.TestCase, 是以這兩個功能大部分一緻(Python很多架構都內建了unittest)。
django.test.TestCase類主要由前、後置處理方法 和test開頭的方法組成 test開頭的方法 是編寫了測試邏輯的用例 setUp方法 (名字固定)在每一個測試方法執行之前被調用 tearDown方法(名字固定) 在每一個測試方法執行之前被調用 setUpClass類方法(名字固定)在整個類運作前執行隻執行一次 tearDownClass類方法(名字固定)在調用整個類測試方法後執行一次
2: 樣例
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yNwEWMldzY1I2MkNTZllzM1ETZ3MWZ5ADOiJTNjRDZm9CXwMzLcdDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL5M3Lc9CX6MHc0RHaiojIsJye.png)
3:setUpClass 和 tearDownClass應用場景:
當類中的測試用例需要共享一些資料,比如,我們測試:擷取使用者資訊、擷取使用者浏覽器記錄、擷取使用者位址清單時,需要先進行使用者登入,測試完成之後進行使用者退出。
如果我們通過 setUp 和 teardown 方法,那麼我們就需要多次進行登入、退出,這樣是重複的代碼,通常是不必要的。
我們可以通過 setUpClass 和 tearDownClass 做類級别的前置處理(例如,使用者登入)和後置處理(例如,登出),這兩個方法每個類中隻會執行一次。
1: Client的特點:
Client的執行個體對象可以進行狀态保持。
使用Client進行測試時,不需要啟動伺服器。
Client測試時Django特有的,隻能測試Dijango代碼。
Client的get, post方法不需要攜帶協定,域名,端口,隻需要攜帶路徑。
如果發送的是json資料,需要指定資料格式:content_type='application/json’
2:案例: 對美多商城進行注冊,然後登入,然後檢視使用者資訊,最後登出。
将上面代碼轉換成使用Client類來操作:
測試結果:
Django 當中提供了多種斷言方法,這些方法幫助我們進行斷言,msg 參數是可選的描述資訊,當斷言方法失敗時會抛出 AssertionError。
常見斷言方法如下: