在unittest單元測試中也提供了斷言的方式,經過斷言判斷用例有沒有成功。json
unittest框架的TestCase類提供如下方法用於測試結果的判斷api
方法 | 檢查 |
assertEqual(a, b) | a ==b |
assertNotEqual(a, b) | a !=b |
assertTrue(x) | bool(x) is True |
assertFalse(x) | Bool(x) is False |
assertIs(a, b) | a is b |
assertIsNot(a, b) | a is not b |
assertIsNone(x) | x is None |
assertIsNotNone(x) | x is not None |
assertIn(a, b) | a in b |
assertNotIn(a, b) | a not in b |
assertIsInstance(a, b) | isinstance(a,b) |
assertNotIsInstance(a, b) | not isinstance(a,b) |
列舉了上面的方法其中3個,而後觀察能夠看出來其中前2條用例斷言是正確的,可是最後一個是斷言失敗的用例框架
# coding:utf-8 import unittest class Test(unittest.TestCase): def test01(self): ''' 判斷 a = b ''' a = '111' b = '111' self.assertEqual(a,b) def test02(self): ''' a 存在 b 之中 ''' a = '安靜' b = '測試-安靜' self.assertIn(a,b) def test03(self): ''' 失敗用例 ''' a = '安靜' b = '測試-安靜' self.assertNotIn(a,b) if __name__ == '__main__': unittest.main()
經過執行後咱們看下結果提示2個經過,1個是失敗的,失敗的緣由也打印出來了post
有的小夥伴們確定會說,這個報錯看不懂,那麼能有更清楚的報錯嗎?固然了。unittest這裏提供了咱們本身進行設置報錯信息單元測試
咱們直接在斷言的後面添加想要的報錯信息測試
def test03(self): ''' 失敗用例 ''' a = '安靜' b = '測試-安靜' self.assertNotIn(a,b,msg='報錯緣由,%s沒有包含%s'%(a,b))
經過執行後,咱們在看下報錯的信息,此次就很明錯了。url
看了上面的內容你們都會了,可是不動手作一作怎麼知道本身到底會不會呢?前面安靜也寫了關於requests的一些內容,咱們就經過request+unittest完成咱們的簡單接口自動化spa
接口信息3d
接口:https://api.apiopen.top/searchMusic
參數:name:歌曲名稱
按照上面的接口信息,簡單的寫了幾個用例。可能有的小夥伴們就怕執行後報錯,那咱們就經過try把錯誤異常捕捉。(這裏沒有具體的完善代碼格式哈)code
這裏接口返回的內容能夠經過json格式轉換,讓咱們更加清楚的去尋找咱們想要的數據
# coding:utf-8 import unittest import requests class Music(unittest.TestCase): def test01(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"斷橋殘雪" } r = requests.post(url,data=data) b = r.json()['result'][0]['title'] a = '斷橋殘雪' self.assertEqual(a,b) print('第一個用例經過') def test02(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"說好不哭" } r = requests.post(url,data=data) a = '周杰倫' b = r.text self.assertIn(a,b) print('第二個用例經過') def test03(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"芒種" } r = requests.post(url,data=data) a = '抖音' b = r.text try: self.assertIn(a,b,msg='\n抖音不存在芒種歌曲信息中') except Exception as msg: print('錯誤信息%s'%msg) print('第三個用例失敗') if __name__ == '__main__': unittest.main()
話很少說,咱們直接執行。能夠看到前面2個已經所有經過了,可是最後一個用例失敗了,失敗的緣由也打印出來了。
咱們會發現上面的代碼有不少重複的地方,你們能夠嘗試解決代碼重複性的問題哈,
經過簡單的例子完成了對unittest中的斷言瞭解,具體的你們要動手去操做,俗話說熟能生巧,在那個場景下須要用到什麼樣的斷言方便,這個都是須要本身一點點的操做後總結出來的