一,基本概念
- TestCase:所有测试用例的基类
- TestLoad:加载测试用例,返回TestSuite(测试套件)
- TestSuite:创建测试套件
- TextTestRunner:运行测试用例
- TextTestResult:测试结果(包含 运行多少,错误多少,失败多少)
二,创建测试用例类
- 必须继承TestCase
- 测试用例的名字必须以test开头
- 定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
- 一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
- 调用unittest.main()启动自动测试
- 如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。
三,有选择的测试
-
unittest.
skip
(reason)
-
unittest.
skipIf
(condition, reason)
-
unittest.
skipUnless
(condition, reason)
-
unittest.
expectedFailure
()
# coding=utf-8
class testclass:
def sum(self , x, y):
return x + y
def sub(self , x, y):
return x - y
#coding=utf-8
import unittest
from myclass import myclass
class simpleTest(unittest.TestCase):
def setUp(self):
print 'start test.....'
self.tclass=myclass.testclass()
def tearDown(self):
print 'end test.....'
def testsum(self):
self.assertEqual(self.tclass.sum(1, 2),3,'sum test fail')
def testsub(self):
self.assertEqual(self.tclass.sub(2, 1),1, 'sub test fail')
if __name__ == '__main__':
# suite=unittest.TestLoader().loadTestsFromTestCase(simpleTest)
# unittest.TextTestRunner.verbosity(2).run(suite)
for key in dir(unittest):#查看该模块所有类
print key
unittest.main()
#coding=utf-8
import sys
import unittest
from myclass import myclass
#测试模块中某一个类中的函数
#定义两个测试用例
class mytest(unittest.TestCase):
def setUp(self):
self.tclass=myclass.testclass()
def tearDown(self):
pass
@unittest.skip("skipping")
def testsum(self):
self.assertEqual(self.tclass.sum(1, 2),3,'test sum fail')
@unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
def testsub(self):
self.assertEqual(self.tclass.sub(2, 1),1,'test sum fail')
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(mytest)#构建测试套件
# suite = unittest.TestSuite([suite1, suite2]) 可以添加多个套件
result= unittest.TextTestRunner(verbosity=2).run(suite)
print result