unittest 基本示例

2022-08-01 14:32 更新

unittest 模塊提供了一組豐富的工具,用于構(gòu)造和運(yùn)行測試。本節(jié)演示了一小部分工具足以滿足大多數(shù)用戶的需求。

下面是一個(gè)測試三個(gè)字符串方法(這三個(gè)方法分別為upper方法,isupper和split()方法)的簡短腳本:

import unittest

class TestStringMethods(unittest.TestCase):
    #測試upper方法,測試字符串'foo'使用upper方法后是否返回'FOO'
    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    #測試isupper方法,測試字符串'FOO'使用isupper方法后是否返回true,測試字符串'Foo'使用isupper后是否返回false
    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())
    
    #測試split方法,測試字符串s能不能被正常的分割為兩個(gè)字符串(存在列表中)
    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # 當(dāng)分隔符不是字符串時(shí),檢查 s.split 是否失敗
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()

測試用例是通過繼承 unittest.TestCase 來創(chuàng)建的。這三個(gè)單獨(dú)的測試是用名稱以字母 ?test ?開頭的方法定義的。此命名約定告知測試運(yùn)行程序哪些方法代表測試。

每個(gè)測試的關(guān)鍵是調(diào)用 assertEqual() 以檢查預(yù)期結(jié)果; assertTrue() assertFalse() 驗(yàn)證條件;或 assertRaises() 以驗(yàn)證是否引發(fā)了特定異常。這些方法用于代替 assert 語句,因此測試運(yùn)行者可以累積所有測試結(jié)果并生成報(bào)告。

setUp() tearDown() 方法允許您定義將在每個(gè)測試方法之前和之后執(zhí)行的指令。它們?cè)诮M織測試代碼部分中有更詳細(xì)的介紹。

最后一個(gè)塊顯示了一種運(yùn)行測試的簡單方法。 unittest.main() 為測試腳本提供了一個(gè)命令行界面。從命令行運(yùn)行時(shí),上面的腳本會(huì)生成如下所示的輸出:

...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

 假設(shè)上述代碼保存在一個(gè)叫test.py的文件中,那么運(yùn)行該代碼為?python -m unittest test.py?

將?-v?選項(xiàng)傳遞給測試腳本將指示 unittest.main() 啟用更高級(jí)別的詳細(xì)程度,并生成以下輸出:

test_isupper (__main__.TestStringMethods) ... ok
test_split (__main__.TestStringMethods) ... ok
test_upper (__main__.TestStringMethods) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

 傳遞-v選項(xiàng)是在命令行中傳遞的,

 假設(shè)上述代碼保存在一個(gè)叫test.py的文件中,那么運(yùn)行該代碼為?python -m unittest -v test.py?

上面的例子顯示了unittest最常用的功能,這些功能足以滿足許多日常測試需求。本文檔的其余部分從第一原則開始探討完整的功能集。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)