Python 的unittest 初體驗

學了幾天的Python,幾天終於開始學測試,跟我的實習工作有點關係 了


應爲unittest是集成在Python裏面的,就像Java的Junit,不需要安裝第三方庫不像nose


上代碼:

主要的:

# -*- coding: utf8 -*-
import random
import unittest
#引進來兩個被測的類,一個是進行一些遞歸計算,一個純粹打印個乘法表
import beingtest_test,BeingTest2
class TestSequenceFunctions(unittest.TestCase):

    def setUp(self):
        self.i = 1
        self.seq = range(10)
        self.b1 = beingtest_test.BeingTest()
        print 'begin testing %d' % self.i

    def test_shuffle(self):
        # make sure the shuffled sequence does not lose any elements
        random.shuffle(self.seq)
        print self.seq
        self.seq.sort()
        print self.seq
        self.assertEqual(self.seq, range(10))

        # should raise an exception for an immutable sequence
        self.assertRaises(TypeError, random.shuffle, (1,2,3))

    def test_choice(self):
        element = random.choice(self.seq)
        self.assertTrue(element in self.seq)

    def test_sample(self):
        with self.assertRaises(ValueError):
            random.sample(self.seq, 20)
        for element in random.sample(self.seq, 5):
            self.assertTrue(element in self.seq)
    def test_fib(self):
        self.assertEqual(self.b1.fib(3), 3)
    def test_fac(self):
        self.assertEqual(self.b1.fac(3), 6)
    #退出清理工作  
    def tearDown(self):
        self.i+=1
        print 'finish testing!!',self.i
        
class Test2(unittest.TestCase):
    def setUp(self):
        self.b2 = BeingTest2.num2test()
    #測試的函數必須用test開頭
    def testnum2test(self):
        self.b2.print_Multiplication_table()
    #這個函數在測試的時候不會執行
    def te_stnum2test(self):
        self.b2.print_Multiplication_table()
    
if __name__ == '__main__':
    #unittest.main()
    suite1 =unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
    suite2 =unittest.TestLoader().loadTestsFromTestCase(Test2)
    suite = unittest.TestSuite([suite1, suite2])
    unittest.TextTestRunner(verbosity=2).run(suite)


簡單

計算的類:

# -*- coding: cp936 -*-
class BeingTest (object):
    def __init__(self):
        pass
    def fib(self,x):
        if x<2:return 1
        #python 裏面不能直接調用本身的函數
        return (self.fib(x-2) +self.fib(x-1))
    def fac(self,x):
        print 'i am from beTest',x
        if x<2:return 1
        return (x*self.fac(x-1))
    def sum_(self,x):
        if x<2:return 1
        return x+self.sum_(x-1)
    

打印的類:

class num2test(object):
    def print_Multiplication_table(self):
        for i in range(1,10):
            for j  in range(1,i+1):
                print ' %s * %s = %s ' % (i,j,i*j),
                if i == j:
                    print '\n'


還是比較簡單的。



差點忘了附上結果圖



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章