python---unittest模塊

unittest 原名為 PyUnit,是由 java 的 JUnit 衍生而來

unittest庫提供了test cases, test suites, test fixtures,test runner。

  • test cases 通過繼承TestCase類,創(chuàng)建一個(gè)test或者多個(gè)test
  • test suites 測(cè)試套件,相當(dāng)于test的容器
  • test fixtures 通常為setup + test case + teardown結(jié)構(gòu)
  • test runner 執(zhí)行測(cè)試用例tests或suit,可以指定執(zhí)行方式
整體結(jié)構(gòu)

待測(cè)試的類:

class Count:
    def __init__(self,a,b):
        self.a = a
        self.b = b
    def add(self):
        return self.a+self.b

示例1:

import unittest
class TestDemo(unittest.TestCase):

    def setUp(self):
        print("setUp")

    def test_add(self):
        z = Count(2,3)
        self.assertEqual(z.add(),5)

    def test_invid_add(self):
        z = Count(2, 3)
        self.assertNotEqual(z.add(),6)

    def tearDown(self):
        print("tearDown")

if __name__=="__main__":
    suit=unittest.TestSuite()#在pycharm中,手動(dòng)修改以一般python文件方式去運(yùn)行
    suit.addTest(TestDemo("test_invid_add"))
    suit.addTest(TestDemo("test_add"))
    runner=unittest.TextTestRunner()
    runner.run(suit)
    # unittest.main() #默認(rèn)按照字母和數(shù)字順序執(zhí)行,等同于unittest.makeSuite(test)

示例2:

import unittest
lass TestDemo(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setUpClass")

    def test_add(self):
        print("test_add")
        z = Count(2,3)
        self.assertEqual(z.add(),5)

    def test_invid_add(self):
        print("test_invid_add")
        z = Count(2, 3)
        self.assertNotEqual(z.add(),6)

    @classmethod
    def tearDownClass(cls):
        print("tearDownClass")


if __name__=="__main__":
    suit=unittest.TestSuite()
    suit.addTest(TestDemo("test_time"))
    suit.addTest(TestDemo("test_add"))
    suit.addTest(TestDemo("test_invid_add"))
    runner=unittest.TextTestRunner()
    runner.run(suit)

從以上2個(gè)示例可知道:

  • unittest默認(rèn)是按照字母和數(shù)字的順序運(yùn)行,倘若需要按照我們指定的順序執(zhí)行,可使用 suit.addTest()的方式去指定
  • setUp()、tearDown()會(huì)在每個(gè)測(cè)試用例(test開頭)之前和之后執(zhí)行
  • setUpClass(cls)、tearDownClass(cls)僅在用例之前和之后各執(zhí)行1次,與上述的setUp()、tearDown()不同
  • 使用pycharm IDE運(yùn)行unittest文件,不管是默認(rèn)的用例執(zhí)行順序,還是指定的用例執(zhí)行順序,用例執(zhí)行結(jié)果均為默認(rèn)的順序,即按照字母和數(shù)字的順序執(zhí)行。這算是pycharm的一個(gè)小小bug,具體做法:進(jìn)入運(yùn)行配置界面,在Python 下手動(dòng)創(chuàng)建指定執(zhí)行的py文件,而不是Python tests下
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容