1 TestCase
一個TestCase的實例就是一個測試用例。什么是測試用例呢?就是一個完整的測試流程,
包括測試環境的準備(setUp),執行測試代碼(run),以及測試后環境的還原(tearDown)。單元
測試(unit test)的本質也就在這里,一個測試用例是一個完整的測試單元,通過運行這個測試單元,可以對某一個問題進行驗證。
2 TestSuite
而多個測試用例集合在一起就是TestSuite,而且TestSuite也可以嵌套TestSuite。TestLoader是用來加載測試用例到TestSuite中的。
3 TextTestRunner
TextTestRunner是用來執行測試用例的,其中的run()會執行TestSuite/TestCase中的run(result)方法。測試的結果會保存到TextTestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息。
4 Fixture
而對一個測試用例環境的搭建和銷毀,是一個fixture。
案例:定義一個calculate類,然后用unittest進行測試;
#!/usr/bin/python3
class Math:
def __init__(self,a,b):
self.a = int(a)
self.b = int(b)
def add(self):
return self.a + self.b
測試代碼:
#!/usr/bin/python3
from calculator import Math
import unittest
class TestMath(unittest.TestCase):
def setUp(self):
print('test start')
def test_add(self):
j = Math(5,10)
#self.assertEqual(j.add(),15)
self.assertEqual(j.add(),12)
def tearDown(self):
print('test end')
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestMath('test_add'))
runner = unittest.TextTestRunner()
runner.run(suite)
執行結果;
Testing started at 16:39 ... C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe "D:\PyCharm Community Edition 2017.3.3\helpers\pycharm\_jb_unittest_runner.py" --path E:/Selenium/unittest/test_Math.py Launching unittests with arguments python -m unittest E:/Selenium/unittest/test_Math.py in E:\Selenium\unittest test start test end
Ran 1 test in 0.008s
FAILED (failures=1)
12 != 15
Expected :15 Actual?? :12 ?<Click to see difference>
Traceback (most recent call last): ? File "D:\PyCharm Community Edition 2017.3.3\helpers\pycharm\teamcity\diff_tools.py", line 30, in _patched_equals ??? old(self, first, second, msg) ? File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 829, in assertEqual ??? assertion_func(first, second, msg=msg) ? File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 822, in _baseAssertEqual ??? raise self.failureException(msg) AssertionError: 15 != 12
During handling of the above exception, another exception occurred:
Traceback (most recent call last): ? File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 59, in testPartExecutor ??? yield ? File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\unittest\case.py", line 605, in run ??? testMethod() ? File "E:\Selenium\unittest\test_Math.py", line 13, in test_add ??? self.assertEqual(j.add(),12)
Process finished with exit code 1
因為12 !=15,所以報錯。
?