python单元测试

个人在工作中用的不多。

编写单元测试,我们需要引入Python自带的unittest模块:

class Dict(dict):

    def __init__(self, **kw):
        super(Dict, self).__init__(**kw)

    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError(r"'Dict' object has no attribute '%s'" % key)

    def __setattr__(self, key, value):
        self[key] = value

编写单元测试类:

unittest中有很多方法测试类中的属性的方法。

# -*- coding: utf-8 -*-
import unittest

import Test

class TestDict(unittest.TestCase):
    def test_init(self):
        d = Test.Dict(a=1, b='test')
        self.assertEqual(d['a'], 1)
        self.assertEqual(d['b'], 'test')
        self.assertTrue(isinstance(d, dict))

    def test_key(self):
        d = Test.Dict()
        d['key'] = 'value'
        self.assertEqual(d['key'], 'value')

    def test_attr(self):
        d = Test.Dict()
        d.key = 'value'
        self.assertTrue('key' in d)
        self.assertEqual(d['key'], 'value')

    def test_keyerror(self):
        d = Test.Dict()
        with self.assertRaises(KeyError):
            value = d['empty']

    def test_attrerror(self):
        d = Test.Dict()
        with self.assertRaises(AttributeError):
            value = d.empty

if __name__=='__main__':
    TestDict.test_attrerror()

  

setUp与tearDown

可以在单元测试中编写两个特殊的setUp()tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。

可以将类中每一个方法都需要运行的代码放到其中。比如连接数据库等操作

    def setUp(self):
        print 'setUp...'

    def tearDown(self):
        print 'tearDown...'
原文地址:https://www.cnblogs.com/likeyou1/p/8430519.html