python:unittest(测试框架)

一,基本概念

  • TestCase:所有测试用例的基类
  • TestLoad:加载测试用例,返回TestSuite(测试套件)
  • TestSuite:创建测试套件
  • TextTestRunner:运行测试用例
  • TextTestResult:测试结果(包含 运行多少,错误多少,失败多少)

 

二,创建测试用例类

  1. 必须继承TestCase
  2. 测试用例的名字必须以test开头
  3. 定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
  4. 一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
  5. 调用unittest.main()启动自动测试
  6. 如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-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
posted @ 2015-12-09 21:07  奋斗的珞珞  阅读(3100)  评论(0编辑  收藏  举报