Unittestest模塊筆記

一、Unittest基本內(nèi)容

(一)基本名詞含義

Suit內(nèi)容:
TestCase:測(cè)試用例,最小的測(cè)試單元
TestSuit:多個(gè)測(cè)試用例的集合(至少一個(gè)測(cè)試用例),包括測(cè)試用例的預(yù)置步驟(執(zhí)行用例前執(zhí)行),后置步驟(執(zhí)行用例后執(zhí)行)

二园爷、Unittest基本方法

創(chuàng)建的用例集類必須繼承unittest.TestCase

(一)setUpClass與tearDownClass

setUpClass與tearDownClass在一個(gè)測(cè)試集中只會(huì)出現(xiàn)一次

import unittest
#創(chuàng)建的類必須繼承unittest.TestCase,否則是沒用的
class Test_suit(unittest.TestCase):
    #setUpClass與tearDownClass使用前必須使用@classmethod裝飾器
    @classmethod
    def setUpClass(cls) -> None:
        pass
    #setUpClass是測(cè)試集執(zhí)行前最開始執(zhí)行的式撼,也只執(zhí)行一次
    @classmethod
    def tearDownClass(cls) -> None:
        #要執(zhí)行什么代碼自己寫童社,cls與self一樣,同時(shí)cls后面接的參數(shù)可以在整個(gè)class中通用
        pass

    # tearDownClass是測(cè)試集執(zhí)行完畢再執(zhí)行的著隆,也只執(zhí)行一次

(二)setUp與tearDown

import unittest
class Test_suit(unittest.TestCase):
    #setUpClass與tearDownClass使用前必須使用@classmethod裝飾器
    @classmethod
    def setUpClass(cls) -> None:
        pass
    #setUpClass與tearDown一樣只會(huì)出現(xiàn)一次叠洗,但是會(huì)在每次執(zhí)行用例前后分別執(zhí)行一次,與ddt一起使用特別明顯
    #setUpClass是測(cè)試集執(zhí)行前最開始執(zhí)行的旅东,也只執(zhí)行一次

    def setUp(self) -> None:
        pass

    def test_case1(self):
        pass
    #可以有多個(gè)用例
    def test_case2(self):
        pass

    def tearDown(self) -> None:
        pass

    @classmethod
    def tearDownClass(cls) -> None:
        #要執(zhí)行什么代碼自己寫灭抑,cls與self一樣,同時(shí)cls后面接的參數(shù)可以在整個(gè)class中通用
        pass

    # tearDownClass是測(cè)試集執(zhí)行完畢再執(zhí)行的抵代,也只執(zhí)行一次

(三)添加用例

import unittest
class Test_suit(unittest.TestCase):
    def test_case1(self):
        print("測(cè)試1")
    #可以有多個(gè)用例
    def test_case2(self):
        print("測(cè)試2")

if __name__ == '__main__':
    # 創(chuàng)建測(cè)試套件
    suite = unittest.TestSuite()
    """自動(dòng)讀取指令名稱開頭py文件內(nèi)的用例"""
    # 指定識(shí)別測(cè)試用例的規(guī)則:識(shí)別所有test開頭的py文件為測(cè)試用例,按模塊名順序執(zhí)行
    # tests = unittest.defaultTestLoader.discover('測(cè)試模塊所在目錄' , pattern = 'test*.py')
    # suite.addTests(tests)

    #單獨(dú)運(yùn)行某個(gè)用例
    # suite.addTest(Test_suit('test_case1'))
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

(四)出報(bào)告

注意:

這里面有個(gè)坑腾节,不注意是出不了報(bào)告的,就是用例和出報(bào)告的文件要分別寫py文件

目錄結(jié)構(gòu):

目錄結(jié)構(gòu)
#test.py
import unittest
class Test_suit(unittest.TestCase):
    def test_case1(self):
        print("測(cè)試1")
    #可以有多個(gè)用例
    def test_case2(self):
        print("測(cè)試2")

#result.py
import unittest
if __name__ == '__main__':
    # 創(chuàng)建測(cè)試套件
    suite = unittest.TestSuite()
    """自動(dòng)讀取指令名稱開頭py文件內(nèi)的用例"""
    # 指定識(shí)別測(cè)試用例的規(guī)則:識(shí)別所有test開頭的py文件為測(cè)試用例,按模塊名順序執(zhí)行
    # tests = unittest.defaultTestLoader.discover('測(cè)試模塊所在目錄' , pattern = 'test*.py')
    tests = unittest.defaultTestLoader.discover(r'..\temp', pattern='test*.py')
    suite.addTests(tests)

    #單獨(dú)運(yùn)行某個(gè)用例
    # suite.addTest(Test_suit('test_case2'))
    with open('report.text','w') as rp:
        runner = unittest.TextTestRunner(stream=rp,verbosity=2)
        # runner = unittest.TextTestResult()
        runner.run(suite)

三荤牍、Unittest斷言(全部)

(一)常用斷言方法

斷言方法 表達(dá)式
assertIn assertIn(self, member, container, msg=None)
assertNotIn assertNotIn(self, member, container, msg=None)
assertIs assertIs(self, expr1, expr2, msg=None)
assertIsNot assertIsNot(self, expr1, expr2, msg=None)
assertEqual assertEqual(self, first, second, msg=None)
assertNotEqual assertNotEqual(self, first, second, msg=None)
assertTrue assertTrue(self, expr, msg=None)
assertFalse assertFalse(self, expr, msg=None)

assertTrue:斷言表達(dá)式是否為真案腺,可以直接寫大于,小于康吵,等于等,相當(dāng)于就是Python自帶的assert方法晦嵌,只是經(jīng)過改造了

(二)非常用斷言方法

斷言方法 表達(dá)式
assertFalse assertFalse(self, expr, msg=None)
assertTrue assertTrue(self, expr, msg=None)
assertRaises assertRaises(self, expected_exception, *args, **kwargs)
assertWarns assertWarns(self, expected_warning, *args, **kwargs)
assertLogs assertLogs(self, logger=None, level=None)
assertAlmostEqual assertAlmostEqual(self,first,second,places=None,msg=None,delta=None)
assertNotAlmostEqual assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None)
斷言序列一是否與序列二相等
assertListEqual assertListEqual(self, list1, list2, msg=None)
斷言列表一是否與列表二相等
assertSetEqual assertSetEqual(self, set1, set2, msg=None)
assertDictEqual assertDictEqual(self, d1, d2, msg=None)
assertDictContainsSubset assertDictContainsSubset(self, subset, dictionary, msg=None)
assertCountEqual assertCountEqual(self, first, second, msg=None)
一種無(wú)序的序列比較同辣,斷言相同的元素,忽視序列惭载。如果同一個(gè)元素出現(xiàn)多次旱函,它驗(yàn)證元素出現(xiàn)的次數(shù)是否相同。
zassertMultiLineEqualebra assertMultiLineEqual(self, first, second, msg=None)
first與second必須是一個(gè)字符串
assertLess(self, a, b, msg=None) assertLess
斷言a<b是否成立描滔,不成立斷言失敗棒妨,并輸出msg
assertLessEqual assertLessEqual(self, a, b, msg=None)
斷言a<=b是否成立
assertGreater assertGreater(self, a, b, msg=None)
斷言a>b是否成立,不成立斷言失敗
assertGreaterEqual assertGreaterEqual(self, a, b, msg=None)
assertIsNone assertIsNone(self, obj, msg=None)
assertIsNotNone assertIsNotNone(self, obj, msg=None)
空列表也能斷言成功
assertRegex assertRegex(self, text, expected_regex, msg=None)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末含长,一起剝皮案震驚了整個(gè)濱河市券腔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拘泞,老刑警劉巖纷纫,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異田弥,居然都是意外死亡涛酗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門偷厦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來商叹,“玉大人,你說我怎么就攤上這事只泼∑鼠希” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵请唱,是天一觀的道長(zhǎng)弥咪。 經(jīng)常有香客問我,道長(zhǎng)十绑,這世上最難降的妖魔是什么聚至? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮本橙,結(jié)果婚禮上扳躬,老公的妹妹穿的比我還像新娘。我一直安慰自己甚亭,他們只是感情好贷币,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亏狰,像睡著了一般役纹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暇唾,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天促脉,我揣著相機(jī)與錄音,去河邊找鬼策州。 笑死嘲叔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抽活。 我是一名探鬼主播硫戈,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼下硕!你這毒婦竟也來了丁逝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梭姓,失蹤者是張志新(化名)和其女友劉穎霜幼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體誉尖,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡罪既,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琢感。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丢间,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驹针,到底是詐尸還是另有隱情烘挫,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布柬甥,位于F島的核電站饮六,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏苛蒲。R本人自食惡果不足惜卤橄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臂外。 院中可真熱鬧窟扑,春花似錦、人聲如沸寄月。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)漾肮。三九已至厂抖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間克懊,已是汗流浹背忱辅。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谭溉,地道東北人墙懂。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扮念,于是被迫代替她去往敵國(guó)和親损搬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容