新建一個calculator.py
class Count(object):
def __init__(self,a,b):
self.a = int(a)
self.b = int(b)
def add(self):
return self.a + self.b
一個簡單的類,有構造方法,運行一個加法運算
再建立一個test.py
import calculator
class TestCount():
def test_add(self):
try:
j = calculator.Count(2,3)
add = j.add()
#這個意思就是斷言 若果不等於 拋出自定義異常信息
assert(add == 5),'Integer addition result error!'
except AssertionError as msg:
print(msg)
else:
print('Test pass')
mytest = TestCount()
mytest.test_add()
運行成功
運行失敗
利用unittest運行
from calculator import Count
import unittest
class TestCount(unittest.TestCase):
#起始方法
def setUp(self):
print('test start')
def test_add(self):
j = Count(2,3)
self.assertEqual(j.add(),5)
#結束方法
def tearDown(self):
print('test end')
#if __name__ == '__main__':
#設置這個要用unittest的main來執行
#目前還沒有理解清楚,個人理解
#每一個py文件都可以單獨執行,也就是說每一個py文件裏都有隱藏的__mian__方法
if __name__ == '__main__':
unittest.main()
UnitTest的四個重要概念
1.Test Case
一個TestCase就是一個測試用例
2.Test Suite
一個功能的驗證往往需要多個測試用例,這個就是測試套件
3.Test Runner
運行測試用例和套件的,並返回測試結果
4.Test Fixture
對一個測試用例環境的搭建與銷燬,通過覆蓋setUp盒tearDown實現
tearDown的過程很重要,要爲下一個testcase留下一個乾淨的環境
--------利用測試套件,再放入Runner運行-----
暫時失敗
#from calculator import Count
from com.sola.unittest import calculator
import unittest
class TestCount(unittest.TestCase):
#起始方法
def setUp(self):
print('test start')
def test_add(self):
j = calculator.Count(2,3)
self.assertEqual(j.add(),5)
def test_add2(self):
j = calculator.Count(8,6)
self.assertEqual(j.add(),14)
#結束方法
def tearDown(self):
print('test end')
if __name__ == '__main__':
#構造測試集
suite = unittest.TestSuite()
#把類和方法放入運行
suite.addTest(TestCount("test_add1"))
#執行測試
runner = unittest.TextTestRunner()
runner.run(suite)
還可以給套件傳入數組
suite = unittest.TestSuite()
case = [TestCount("test_add1"),TestCount("test_add2")]
suite.addTest(case)
————————————————————————————————————————————————————————
斷言
斷言A數與B數是否相當,如果不相當設定異常msg
import unittest
class Asstest(unittest.TestCase):
def setUp(self):
#運行後輸入一個參數
number = input("Enter a number")
self.number = int(number)
def test_case(self):
#斷言是否10,不是拋出斷言異常,並拋出設定好的斷言信息
self.assertEqual(self.number,10,msg='Your input is not 10')
def tearDown(self):
pass
if __name__ == '__main__':
unittest.main()
assertIn的用法(判斷是否包含)
import unittest
class testtt(unittest.TestCase):
def testOne(self):
self.assertIn('王','王八蛋',msg='瞅瞅')
if __name__ == '__main__':
unittest.main()
assertIs是否爲同一對象
import unittest
class testtt(unittest.TestCase):
def testOne(self):
numA = 5
numB = 5
self.assertIs(numA,numB,'是否爲同一對象')
if __name__ == '__main__':
unittest.main()
還有asserIsNone對象是否爲空,assertIsInstance判斷對象是否爲一個實例等