继续学习Python,尝试为自己设计的类来编写测试用例, 尝试使用测试驱动开发的方式,hoho,也赶赶潮流。贴一个模板,以后写TestCase就可以直接改改模板就好了,同时也贴一个从koders里面搜到的TestCase,帮助学习。
我整理的模板:
#
-*- coding: utf-8 -*-
from Example import ExampleClass
import unittest
class ExampleClassTestCase(unittest.TestCase):
def setUp(self):
self.example = ExampleClassTestCase()
def tearDown(self):
self.example = None
def testOne(self):
""" A sample test case. """
self.assertEqual(self.example.one(), True, " Error Msg " )
class ExampleClassTestSuite(unittest.TestSuite):
def __init__ (self):
unittest.TestSuite. __init__ (self,map(ExampleClassTestCase,
( " testOne " )))
if __name__ == " __main__ " :
unittest.main()
from Example import ExampleClass
import unittest
class ExampleClassTestCase(unittest.TestCase):
def setUp(self):
self.example = ExampleClassTestCase()
def tearDown(self):
self.example = None
def testOne(self):
""" A sample test case. """
self.assertEqual(self.example.one(), True, " Error Msg " )
class ExampleClassTestSuite(unittest.TestSuite):
def __init__ (self):
unittest.TestSuite. __init__ (self,map(ExampleClassTestCase,
( " testOne " )))
if __name__ == " __main__ " :
unittest.main()
从www.koders.com里面搜索到的TestCase的代码,注意测试函数的命名,test1*, test2*, test3*...,因为PyUnit在执行的时候是按照内部函数的排序顺序来执行函数的,通过此类命名方法,可以保证测试函数的执行顺序。不过看到有些地方提到,TestCase的设计不应该要求测试函数的执行顺序。
#
!
/
usr
/
bin
/
python
from PyQLogger.AtomBlog import AtomBlog
import unittest
import sys
class testAtomBlog(unittest.TestCase):
username = ' user '
password = ' pass '
blogid = ' 666 '
knownid = ' 666 '
knowntitle = ' TEST DO NOT DELETE '
tmpid = None
def setUp(self):
self.atom = AtomBlog(self.username,self.password)
def test1Init(self):
" class initialization "
self.assertEqual( self.atom.host , " www.blogger.com " )
self.assertEqual( self.atom.path , " /atom " )
self.assertEqual( self.atom.username , self.username)
self.assertEqual( self.atom.password , self.password )
def test2New(self):
" new post / delete post "
try :
tmpid = self.atom.newPost(self.blogid, " new test " , " new test " )
self.assertNotEqual(tmpid,None)
self.failUnless( self.atom.deletePost(self.blogid,tmpid) , " couldn't delete temp post " )
except:
self.fail( " newPost exception reached: " )
def test3Edit(self):
" edit existing post "
try :
id = self.atom.editPost(self.blogid,self.knownid,self.knowntitle, " new content " )
except:
self.fail( " editPost exception reached: " )
def test4Get(self):
" geting a feed "
try :
blogs = self.atom.getPosts(self.blogid)
res = False
for blog in blogs:
if blog[ " id " ] == self.knownid:
self.assertEqual(blog[ " title " ],self.knowntitle)
res = True
break
self.assertEqual(res,True)
except:
self.fail( " getPosts exception reached " )
def test5FailGet(self):
" failing on non existent blog "
self.failIf( bool (self.atom.getPosts( " 0 " ))) # i hope there ' s not 0 blog ;)
def test6FailDelete(self):
" failing on deleting non existant post "
self.failIf(self.atom.deletePost(self.blogid, " 0 " ))
if __name__ == ' __main__ ' :
unittest.main()
from PyQLogger.AtomBlog import AtomBlog
import unittest
import sys
class testAtomBlog(unittest.TestCase):
username = ' user '
password = ' pass '
blogid = ' 666 '
knownid = ' 666 '
knowntitle = ' TEST DO NOT DELETE '
tmpid = None
def setUp(self):
self.atom = AtomBlog(self.username,self.password)
def test1Init(self):
" class initialization "
self.assertEqual( self.atom.host , " www.blogger.com " )
self.assertEqual( self.atom.path , " /atom " )
self.assertEqual( self.atom.username , self.username)
self.assertEqual( self.atom.password , self.password )
def test2New(self):
" new post / delete post "
try :
tmpid = self.atom.newPost(self.blogid, " new test " , " new test " )
self.assertNotEqual(tmpid,None)
self.failUnless( self.atom.deletePost(self.blogid,tmpid) , " couldn't delete temp post " )
except:
self.fail( " newPost exception reached: " )
def test3Edit(self):
" edit existing post "
try :
id = self.atom.editPost(self.blogid,self.knownid,self.knowntitle, " new content " )
except:
self.fail( " editPost exception reached: " )
def test4Get(self):
" geting a feed "
try :
blogs = self.atom.getPosts(self.blogid)
res = False
for blog in blogs:
if blog[ " id " ] == self.knownid:
self.assertEqual(blog[ " title " ],self.knowntitle)
res = True
break
self.assertEqual(res,True)
except:
self.fail( " getPosts exception reached " )
def test5FailGet(self):
" failing on non existent blog "
self.failIf( bool (self.atom.getPosts( " 0 " ))) # i hope there ' s not 0 blog ;)
def test6FailDelete(self):
" failing on deleting non existant post "
self.failIf(self.atom.deletePost(self.blogid, " 0 " ))
if __name__ == ' __main__ ' :
unittest.main()