在執行測試case時,若是case成功則case在執行過程當中輸出的內容不會被顯示出來,若是失敗則會。python
class TestLogin(unittest.TestCase): def test_login_by_password(self): a = 2 print("這是運行成功時的輸出") assert a == 1 + 1
若是沒有-b參數,case執行成功時是有打印語句輸出的內容shell
若是加了-b參數就沒有這個輸出。測試
若是有-b參數,可是case運行失敗,則這個輸出仍是會有的debug
-b參數仍是比較有用的,當case執行成,實際上是不關心這些輸出的內容,只有在失敗的時候纔會看這些。3d
在執行case的過程當中,若是按下command+c或control+c,用例不會當即中止而是等待當前的case運行完成而且輸出測試結果後才中斷程序,這個時候若是再次按下command+c或control+c,纔會當即終止程序,並拋出KeyboardInterrupt異常。調試
class TestLogin(unittest.TestCase): def test_login_by_password(self): b = 5 a = 2 time.sleep(4) print("這是運行成功時的輸出") assert a == 1 + 1 def test_login_by_sms(self): print('這是test_login_by_sms') assert 2 == 2 def tearDown(self) -> None: print("這是tearDown")
我在上面的代碼中加了teardown,來試試,試試試試。code
看控制檯的輸出,已經輸入了command+c,可是這條case仍是執行完畢了。blog
若是沒有有這個參數的話,直接按下command+c或control+c程序會當即中止,這時就會致使一個問題,teardown就不會執行了,好比teardown裏面有一些數據清理、資源釋放的操做,這些若是不處理可能會致使系統出現一些問題。那麼此時就能夠加上這個參數,保證teardown是能夠被執行到的。資源
當出現第一個錯誤或者case失敗時,中止運行其餘測試用例。這個參數通常是在咱們剛寫好用例進行調試的時候可使用,而在有定時任務執行case的時候則不能使用。get
仍是用上面那個例子,咱們讓第一個case失敗,而後看看運行狀況。
這裏就只運行了一個測試用例,另外一個沒有執行。
簡單寫個用例
class TestLogin(unittest.TestCase): def test_login_by_password(self): b = 5 a = 3 print("這是運行成功時的輸出") assert a == 1 + 1
當測試運行失敗時會輸出case中全部的局部變量。
上圖是沒有--locals參數的,case運行失敗,從輸出信息中只是能夠看出那裏有個斷言失敗,那麼a究竟是多少致使的失敗呢?可能還要去debug代碼,看看變量a的值。
可是若是咱們使用--locals參數呢
會輸出測試方法中全部的局部變量的值,對於咱們定位問題仍是頗有幫助的。
根據子串或者Unix shell 風格的通配符去匹配測試類和方法,這個匹配是從加載器加載的全部測試方法中區匹配。
class TestLogin(unittest.TestCase): def test_login_by_password(self): b = 5 a = 2 print("這是運行成功時的輸出") assert a == 1 + 1 def test_login_by_sms(self): print('這是test_login_by_sms') assert 2 == 2
這裏有兩個測試方法,可是我只想運行test_login_by_sms
,此時就能夠用到-k參數
注意這裏的子串匹配是大小寫敏感的。
還可使用Unix shell 風格的通配符,是通配符不是正則哈。
模式 | 意義 |
---|---|
* |
匹配全部 |
? |
匹配任何單個字符 |
[seq] |
匹配 seq 中的任何字符 |
[!seq] |
匹配任何不在 seq 中的字符 |
這玩意兒,我用的真很少。。下篇文章文章聊聊unittest的discovery模式