單元測試:unittest.TestCase
阿新 • • 發佈:2018-07-23
elf 代碼 驗證 eas rom tdi 結果 方法 ant a.測試驅動開發:(TDD:Test-Driven Development)
b.單元測試是用來對一個模塊、一個函數或者一個類來進行正確性檢驗的測試工作。
c.以test開頭的方法就是測試方法
d.模塊函數:
檢查預期結果:assertEqual()
驗證條件:assertTrue()或 assertFalse()
驗證是否引發了特定異常:assertRaises()
在每個測試方法之前和之後執行的指令:setUp()和tearDown()
為測試腳本提供命令行界面: unittest.main()
mydict.py:
#!/usr/bin/python # -*- coding: utf-8 -*- class Dict(dict): def __init__(self, **kw): super().__init__(**kw) def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value
mydict_test.py:
#!/usr/bin/python # -*- coding: utf-8 -*- import unittest from mydict import Dict class TestDict(unittest.TestCase): def setUp(self): print('setUp...') def tearDown(self): print('tearDown...') def test_init(self): d = Dict(a=1, b='test') self.assertEqual(d.a, 1) self.assertEqual(d.b, 'test') self.assertTrue(isinstance(d, dict)) def test_key(self): d = Dict() d['key'] = 'value' self.assertEqual(d.key, 'value') def test_attr(self): d = Dict() d.key = 'value' self.assertTrue('key' in d) self.assertEqual(d['key'], 'value') def test_keyerror(self): d = Dict() with self.assertRaises(KeyError): value = d['empty'] def test_attrerror(self): d = Dict() with self.assertRaises(AttributeError): value = d.empty
運行單元測試
一旦編寫好單元測試,我們就可以運行單元測試。最簡單的運行方式是在mydict_test.py
的最後加上兩行代碼:
if __name__ == '__main__': unittest.main()
這樣就可以把mydict_test.py
當做正常的python腳本運行:
$ python mydict_test.py
另一種方法是在命令行通過參數-m unittest
直接運行單元測試:
$ python -m unittest mydict_test ..... ----------------------------------------------------------------------Ran 5 tests in 0.000sOK
單元測試:unittest.TestCase