Python unittest 单元测试

unittest单元测试框架,使用该框架时,类需要继承unittest.TestCase ,在测试的类中,定义测试case.

方式一:unittest.main()执行测试用例,该方式在执行测试用例的时候只会执行以test开头的用例,执行的先后顺序是按照a-z的顺序

class TestStringMethods(unittest.TestCase):
	"""docstring for TestStringMethods"""
	def test_upper(self):
		self.assertEqual('foo'.upper(),'FOO')


	def test_isupper(self):
		self.assertTrue('FOO'.isupper())
		self.assertFalse('Foo'.isupper())


	def test_split(self):
		s = 'hello world'
		self.assertEqual(s.split(),['hello','world'])
		with self.assertRaises(TypeError):
			s.split(2)
	def ask_test(self):
		print "-----ask_test----------"
		
if __name__ == '__main__':
	unittest.main()


执行命令:python test.py  该命令执行的结果只会显示通过和不通过,不能够直接看到程序执行到哪一个测试用例了

在命令中加上一个 -v 在执行的时候就会显示正在执行的用例名称及结果python test.py -v

C:\Users\Administrator>python C:\Users\Administrator\Desktop\test.py -v
test_isupper (__main__.TestStringMethods) ... ok
test_split (__main__.TestStringMethods) ... ok
test_upper (__main__.TestStringMethods) ... ok


----------------------------------------------------------------------
Ran 3 tests in 0.001s


OK

方式二

测试套件的使用,使用测试套件的时候可以更清楚的展示整个用例的结构

import unittest

class WidgetTestCase(unittest.TestCase):
    def setUp(self):
        print "---------setUp-------------"

    def tearDown(self):
        print "------tearDown-----------"

    def test_default_size(self):
        print "--------test_default_size-------------"

    def test_resize(self):
        print "----------test_resize--------------"
if __name__ == '__main__':
    widgetTestSuite = unittest.TestSuite()
    widgetTestSuite.addTest(WidgetTestCase('test_default_size'))
    widgetTestSuite.addTest(WidgetTestCase('test_resize'))
    unittest.TextTestRunner().run(widgetTestSuite)
setUp()和tearDown()这两个方法是做初始化和清理工作的,每执行一个case都会先执行setUp再执行case然后再执行tearDown 。将case添加到一个suite测试套件中,这样做的好处是,如果有多个不同的类测试用例,只需要将这些测试用例添加进去就可以全部执行,只添加需要执行的就可以了

import unittest

class WidgetTestCase(unittest.TestCase):
    def setUp(self):
        print "---------setUp-------------"


    def tearDown(self):
        print "------tearDown-----------"


    def test_default_size(self):
        print "--------test_default_size-------------"


    def test_resize(self):
        print "----------test_resize--------------"

class Mtest_First(unittest.TestCase):
    """docstring for Mtest_First"""
    def setUp(self):
        print "-----Mtest_First----setUp------"
    def tearDown(self):
        print "-----Mtest_First----tearDown----------"


    def M_teat(self):
        print "-------Mtest_First------M_teat-------"
        
if __name__ == '__main__':
    widgetTestSuite = unittest.TestSuite()
    widgetTestSuite.addTest(WidgetTestCase('test_default_size'))
    widgetTestSuite.addTest(WidgetTestCase('test_resize'))
    widgetTestSuite.addTest(Mtest_First('M_teat'))
    unittest.TextTestRunner().run(widgetTestSuite)

方式三

根据需求,可能在执行每个case的时候不需要初始化和清理,只需要在每个class的时候做初始化和清理,整理如下

#-*- coding:utf-8 -*-


import unittest


def setUpModule():
    print "------setUpModule------"
def tearDownModel():
    print "------tearDownModel-----"


class MyTest(unittest.TestCase):
    """docstring for MyTest"""
    # 每个case执行一次setUp和tearDown
    def setUp(self):
        print "-----setUp------"


    def tearDown(self):
        print "--------tearDown------"      
# 每个class执行一次setUp和tearDown
    @classmethod
    def setUpClass(cls):
        print "----setUpClass"


    @classmethod
    def tearDownClass(cls):
        print "-------tearDownClass---------"


    def test_firat(self):
        print "-----test_firat-------"


    def teat_second(self):
        print "------teat_second-------"























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值