unittest---unittest斷言


  在unittest單元測試中也提供了斷言的方式,通過斷言判斷用例有沒有成功。

unittest常用斷言

unittest框架的TestCase類提供以下方法用於測試結果的判斷

方法 檢查
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個是失敗的,失敗的原因也打印出來了

 

有的小伙伴們肯定會說,這個報錯看不懂,那么能有更清楚的報錯嗎?當然了。unittest這里提供了我們自己進行設置報錯信息

自定義報錯信息

我們直接在斷言的后面添加想要的報錯信息

def test03(self):
        '''
        失敗用例
        '''
        a = '安靜'
        b = '測試-安靜'
        self.assertNotIn(a,b,msg='報錯原因,%s沒有包含%s'%(a,b))

通過執行后,我們在看下報錯的信息,這次就很明錯了。

小試牛刀

看了上面的內容大家都會了,但是不動手做一做怎么知道自己到底會不會呢?前面安靜也寫了關於requests的一些內容,我們就通過request+unittest完成我們的簡單接口自動化

接口信息

接口:https://api.apiopen.top/searchMusic

參數:name:歌曲名稱

按照上面的接口信息,簡單的寫了幾個用例。可能有的小伙伴們就怕執行后報錯,那我們就通過try把錯誤異常捕捉。(這里沒有具體的完善代碼格式哈)

這里接口返回的內容可以通過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中的斷言了解,具體的大家要動手去操作,俗話說熟能生巧,在那個場景下需要用到什么樣的斷言方便,這個都是需要自己一點點的操作后總結出來的

 

 

如果感覺安靜寫的對您有幫助的話,右下角可以點個關注,哪里有寫錯的地方或者不懂的地方可以下方留言,看到后第一時間回復~~~

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM