zoukankan      html  css  js  c++  java
  • python 单元测试

    单元测试

    需要编写一个测试类,从unittest.TestCase继承

    以test开头的方法就是测试方法,
    不以test开头的方法不被认为是测试方法,测试的时候不会被执行。

    对每一类测试都需要编写一个test_xxx()方法。

    由于unittest.TestCase提供了很多内置的条件判断,我们只需要调用这些方法就可以断言输出是否是我们所期望的。

    最常用的断言就是assertEqual():

    self.assertEqual(abs(-1), 1) # 断言函数返回的结果与1相等

    编写代码mydict.py:

    class Dict(dict):

    def __init__(self, **kw):
    super().__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

    测试代码

    import unittest

    from mydict import Dict

    class TestDict(unittest.TestCase):

    def test_init(self):
    d = 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 = Dict()
    d['key'] = 'value'
    self.assertEqual(d.key, 'value')

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

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

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

    另一种重要的断言就是期待抛出指定类型的Error,


    比如通过d['empty']访问不存在的key时,断言会抛出KeyError:
    with self.assertRaises(KeyError):
    value = d['empty']


    而通过d.empty访问不存在的key时,我们期待抛出AttributeError:
    with self.assertRaises(AttributeError):
    value = d.empty


    运行方式是在mydict_test.py的最后加上两行代码:

    if __name__ == '__main__':
    unittest.main()

    朝闻道
  • 相关阅读:
    基于Freescale的主流芯片HCS08
    BizTalk Server 2010 映射器(Mapper) [ 下篇 ]
    BizTalk Server 2010 使用 WCF Service [ 中篇 ]
    Ext JS 4 Beta 1发布了
    Step by Step WebMatrix网站开发之一:Webmatrix安装
    REST WebService与SOAP WebService的比较
    BizTalk Server 2010 使用 WCF Service [ 上篇 ]
    BizTalk Server 2010 映射器(Mapper) [ 中篇 ]
    BizTalk Server 2010 映射器(Mapper) [ 上篇 ]
    ExtJS 4 Beta 2预览:Ext.Brew包
  • 原文地址:https://www.cnblogs.com/wander-clouds/p/8464084.html
Copyright © 2011-2022 走看看