天天看點

單元測試---TestCase,Client,斷言

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: 樣例

單元測試---TestCase,Client,斷言

3:setUpClass 和 tearDownClass應用場景:

當類中的測試用例需要共享一些資料,比如,我們測試:擷取使用者資訊、擷取使用者浏覽器記錄、擷取使用者位址清單時,需要先進行使用者登入,測試完成之後進行使用者退出。

如果我們通過 setUp 和 teardown 方法,那麼我們就需要多次進行登入、退出,這樣是重複的代碼,通常是不必要的。

我們可以通過 setUpClass 和 tearDownClass 做類級别的前置處理(例如,使用者登入)和後置處理(例如,登出),這兩個方法每個類中隻會執行一次。

1: Client的特點:

Client的執行個體對象可以進行狀态保持。

使用Client進行測試時,不需要啟動伺服器。

Client測試時Django特有的,隻能測試Dijango代碼。

Client的get, post方法不需要攜帶協定,域名,端口,隻需要攜帶路徑。

如果發送的是json資料,需要指定資料格式:content_type='application/json’

2:案例: 對美多商城進行注冊,然後登入,然後檢視使用者資訊,最後登出。

将上面代碼轉換成使用Client類來操作:

測試結果:

單元測試---TestCase,Client,斷言

Django 當中提供了多種斷言方法,這些方法幫助我們進行斷言,msg 參數是可選的描述資訊,當斷言方法失敗時會抛出 AssertionError。

常見斷言方法如下:

單元測試---TestCase,Client,斷言