pythonÖеĵ¥Ôª²âÊÔ¿ÉÒÔʹÓÃdoctest,unittestÍê³É
1.doctestµÄʹÓÃ
(1)дÈë³ÌÐòÈçÏÂ(cubetest.py)£º
#!/usr/bin/python def cube(x): """ cube a number and return the result >>> cube(2) 8 >>> cube(3) 27 >>> cube(4) 64 """ return x**3; if __name__=='__main__': import doctest; doctest.testmod(verbose=True); |
²âÊÔÓÃÀýдÔÚ×Ö·û´®¡±¡±¡± cube a number¡ ¡°¡±¡±ÖС£
µ÷ÓÃdoctestÖеÄtestmodµÄ·½·¨¼´¿É²âÊÔ¡£
Êä³öÈçÏÂ
Trying: cube(2) Expecting: 8 ok Trying: cube(3) Expecting: 27 ok Trying: cube(4) Expecting: 64 ok 1 itemshad no tests: __main__ 1 itemspassed all tests: 3 tests in __main__.cube 3 testsin 2 items. 3 passedand 0 failed. Testpassed. TestResults(failed=0, attempted=3) |
(2)Ò²¿ÉÒ԰ѲâÊÔÓÃÀýдÔÚ¼Çʱ¾ÎļþÖС£Ð½¨¼Çʱ¾example.txt,дÈëÒÔÏÂÄÚÈÝ£º
>>> from cubetest import cube >>> cube(1) 1 >>> cube(2) 8 >>> cube(4) 64 |
È»ºóд²âÊÔ´úÂë test.py£º
import
doctest
doctest.testfile("example.txt")
|
ʹÓÃpython test.py ¨Cv Ö´ÐвâÊÔ´úÂ룬¿ÉÒԵõ½ÒÔϽá¹û
Trying: from cubetest import cube Expectingnothing ok Trying: cube(1) Expecting: 1 ok Trying: cube(2) Expecting: 8 ok Trying: cube(4) Expecting: 64 ok 1 items passedall tests: 4 tests in example.txt 4 tests in 1items. 4 passed and 0failed. Test passed. |
2.unittestµÄʹÓÃ
(1)д´ý²âÊԵijÌÐòÈçÏ£º
def iseven(x): if(x%2==0): return 1; else: return 0; def isodd(x): if(x%2==1): return 1; else: return 0; |
²âÊÔ³ÌÐòÖеÄÀàeventestÀà¼Ì³Ð×ÔTestCase,Ëü°üº¬setUp() ,test_1(),test_2()ºÍtearDown()Ëĸö·½·¨¡£ÔÚ²âÊÔÔËÐÐǰ£¬»á×Ô¶¯ÔËÐÐsetUp()·½·¨£¬ÔÚ²âÊÔÍê³É֮ǰ£¬»á×Ô¶¯µ÷ÓÃtearDown()·½·¨¡£test_1()ºÍtest_2()ÊÇ×Ô¶¨ÒåµÄ²âÊÔ·½·¨¡£Ð´²âÊÔ³ÌÐòÈçÏ£º
import unittest,evenodd class eventest(unittest.TestCase): def setUp(self): self.ex1=range(0,2,20); self.ex2=range(1,2,20); def test_1(self): for x in self.ex1: x=evenodd.iseven(x); self.assertEqual(x,1); for x in self.ex2: x=evenodd.iseven(x); self.assertEqual(x,0); def test_2(self): for x in self.ex1: x=evenodd.isodd(x); self.assertEqual(x,0); for x in self.ex2: x=evenodd.isodd(x); self.assertEqual(x,1); def tearDown(self): self.ex1=None; self.ex2=None; if __name__=='__main__': unittest.main(); ¡¡¡¡ÉÏÃæÓõ½ÁËself.AssertEqual(),ÀàËÆµÄÅжϷ½·¨»¹ÓУº assertNotEqual(a,b) a!=b asserTrue(x) bool(x)ÎªÕæ assertFalse(x) bool(x)Ϊ¼Ù assertIs(a,b) a is b assertIsNot(a,b) a is not b assertIsNone(x) x is None assertIsNotNone(x) x is not None assertIn (a,b) a in b assertNotIn(a,b) a not in b assertIsInstance(a,b) isinstance(a,b) assertNotIsInstance(a,b) not instance(a,b) |
(2) Ò²¿ÉÒÔʹÓÃTestSuite¶Ô²âÊÔÓÃÀý½øÐзâ×°£¬ÏÂÃæµÄ³ÌÐò¶¨ÒåÁËÀàevensuite£¬Ëü¼Ì³Ð×ÔÀàTestSuite£¬·½·¨addTest()ÓÃÓÚÌí¼Ó²âÊÔ·½·¨¡£
²âÊÔ³ÌÐòÈçÏ£º
import unittest,evenodd class eventest(unittest.TestCase): def setUp(self): self.ex1=range(0,2,20); self.ex2=range(1,2,20); def test_1(self): for x in self.ex1: x=evenodd.iseven(x); self.assertEqual(x,1); for x in self.ex2: x=evenodd.iseven(x); self.assertEqual(x,0); def test_2(self): for x in self.ex1: x=evenodd.isodd(x); self.assertEqual(x,0); for x in self.ex2: x=evenodd.isodd(x); self.assertEqual(x,1); def tearDown(self): self.ex1=None; self.ex2=None; class evensuite(unittest.TestSuite): def suite(self): suite=unittest.TestSuite(); suite.addTest(eventest('test_1')); suite.addTest(eventest('test_2')); return suite; if __name__=='__main__': unittest.main(); |
ÔËÐгÌÐò £¬½á¹ûÊä³ö£º
_ _ ¡¡¡¡ran 2 tests in 0.001s ¡¡¡¡OK |
|