继续学习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()
从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()