zoukankan      html  css  js  c++  java
  • 46-单元测试(1)

    单元测试:对一个函数,类,模块进行测试:TDD(测试驱动开发)

    #在同一个目录下建两个py文件:mydict.py和Testmydict.py
    
    #mydict.py
    class Dict(dict):
        def __init__(self, **kw):
            super().__init__(**kw)
    
        def __getattr__(self, key): #获取attr
            try:
                return self[key] #对dict自定义一个 d.key 的操作 { 原本是d['key'] }
            except KeyError:
                raise AttributeError(r"'Dict' object has no attribute '%s'" % key)
    
        def __setattr__(self, key, value): #设置attr
            self[key] = value
    
        
    #假设要对这个类进行单元测试
    
    #Testmydict.py
    import unittest #单元测试模块
    from mydict import Dict
    class TestDict(unittest.TestCase):
        def test_init(self): #test_xxx即为测试方法,从不同方面对待测试的事物进行测试
            d = Dict(a=1, b='test')
            self.assertEqual(d.a, 1) #断言函数返回的结果与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']  #通过d['empty']访问不存在的key时,断言会抛出KeyError
    
        def test_attrerror(self):
            d = Dict()
            with self.assertRaises(AttributeError):
                value = d.empty #通过d.empty访问不存在的key时,我们期待抛出AttributeError
                
        def setUp(self):   #自动,的在每个测试方法,前面执行
            print('setUp...') 
    
        def tearDown(self): #自动,的在每个测试方法,后面执行
            print('tearDown...')
        #比如如果本测试class需要 自动连接和关闭数据库,可用 setUp()与tearDown()减少重复劳动
        
        #之后进入控制台:python -m unittest mydict_test
  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/LS1314/p/8504603.html
Copyright © 2011-2022 走看看