首页 > 编程语言 > 详细

常见的python的unitest用法

时间:2015-12-11 22:04:06      阅读:644      评论:0      收藏:0      [点我收藏+]

  常见的python的unitest用法

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os,sys
import time
import datetime
import unittest

class NginxTest(unittest.TestCase):
    def setUp(self): 
        #预置环境
        print --------------NginxTestsetUp--------------\n
    def tearDown(self):  
        #清理环境
        print --------------NginxTestclear--------------\n  
        
    def test_nginx(self):
        print test_nginx        
   
    def test_nginxlog(self):               
        print test_nginxlog
        
    @unittest.skip("must skipping") #必须跳过下面用例,相当少用
    def test_mustskip(self):
        print test_mustskip
    
    # def test_1(self):
        # a=1
        # return 1
    @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")#根据条件跳过下面这个用例
    def test_maybeskip(self):
        print test_maybeskip
    
    def suite_1(self):#非test开头的用例在NginxTest中不会被跑到
        print suite_1
        
    def suite_2(self):
        print suite_2         
    

class PhpTest(unittest.TestCase):#因为每个接口的预置环境可能不一样,所以每个接口的用例应该都用单独class来包含,不过每个class的用例都还是要用test开头
    def setUp(self): 
        #预置环境
        print --------------PhpTestsetUp--------------\n
    def tearDown(self):  
        #清理环境
        print --------------PhpTestclear--------------\n  
        
    def test_php(self):
        print test_php        
   
    def test_phplog(self):               
        print test_phplog
    
    
def suite():#这个表示测试集,不要放在class内,否则会提示"没有这样的测试方法在<class‘myapp.tests.SessionTestCase‘>:的runTest ",我觉得它唯一的好处就是调试的时候可以单独调试它而已,我一般不用它,调试时可以注销不需要的class啊 ;-)
    suite = unittest.TestSuite()
    suite.addTest(NginxTest("suite_1"))
    suite.addTest(NginxTest("suite_2"))
    unittest.TextTestRunner().run(suite)
    
if __name__ == __main__:
   unittest.main(exit = False,verbosity=2)#它是全局方法,把它屏蔽后,不在suite的用例就不会跑,exit = False表示中间有用例失败也继续执行;还有比较常用的verbosity=2,表示显示def名字
    suite()#执行suite

  如果接口相当多,为了方便维护,建议每个class用独立的py来写,然后用一个“总入口”去import所有py,然后再调用就行了,这是suite就派上用场了

  举个例子,case.py如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import time
import datetime
import unittest

class LuaTest(unittest.TestCase):
    def runTest(self):
        print anything
    def setUp(self): 
        #预置环境
        print --------------LuaTestsetUp--------------\n
    def tearDown(self):  
        #清理环境
        print --------------LuaTestclear--------------\n  
        
    def test_lua(self):
        print test_lua        
   
    def test_lualog(self):               
        print test_lualog
        
def casesuite():
    suite = unittest.TestSuite()
    suite.addTest(LuaTest("test_lua"))
    suite.addTest(LuaTest("test_lualog"))
    unittest.TextTestRunner().run(suite)

  调用case.py的“总入口py”就得这样写:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os,sys
import time
import datetime
import unittest

import case

if __name__ == __main__:
    case.casesuite()

  如果case.py没有用casesuite“收集”它的用例的话,总入口调不了里面的用例的,不知道是不是我的用法有问题,如果有朋友知道欢迎提示。有的文章说用discover可以实现同样的需求,不过我不会。。。
  最后说一下,我最常用的方法是assertEqual、assertNotEqual。

常见的python的unitest用法

原文:http://www.cnblogs.com/idbeta/p/5040187.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!