學了幾天的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'
還是比較簡單的。
差點忘了附上結果圖