unittest---unittest斷言

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

unittest經常使用斷言

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中的斷言瞭解,具體的你們要動手去操做,俗話說熟能生巧,在那個場景下須要用到什麼樣的斷言方便,這個都是須要本身一點點的操做後總結出來的

 

 

若是感受安靜寫的對您有幫助的話,右下角能夠點個關注,哪裏有寫錯的地方或者不懂的地方能夠下方留言,看到後第一時間回覆~~~

相關文章
相關標籤/搜索