Python21 单元测试、文档测试

单元测试、文档测试

  • 单元测试:单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
    • unintest:Python自带的单元测试框架
      • 代码:
        ```
        # 单元测试
        ## unittest

        class Dict(dict):
        def init(self,**kw):
        super().__init__(**kw) # 使用dict的初始化方法

          def __getattr__(self, key): # 动态返回属性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
        import unittest # 导入unittest
        class TestDict(unittest.TestCase): # 定义测试类,并继承unittest.TestCase类

        # test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行
        def setUp(self): # 在每个测试方法前都会调用一次
        print('unittest 单元测试 开始了! 现在执行的是 setUp方法')

          # 测试dict取值用例
          def test_init(self):
              d = Dict(a=1,b='test')
              self.assertEqual(d.a,1) # d.a 是否与 1 相等
              self.assertEqual(d.b,'test')
              self.assertTrue(isinstance(d,dict)) # d是否是dict类型
        
          # 测试dict 新增key,value用例
          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_keyerrot(self):
              d = Dict()
              with self.assertRaises(KeyError): # 与try...except...finally 类似
                  value = d['empty']
        
          def test_attreeor(self):
              d =Dict()
              with self.assertRaises(AttributeError): # 当通过d.empty 访问不存在的key时,期待抛出AttributeError
                  value = d.empty
        
          def tearDown(self): # 在每个测试方法后都会调用一次
              print('每个测试方法之后都会运行该方法!')
        # 运行测试
        if name == 'main':
        unittest.main()
        # 另一种方法是在命令行通过参数-m unittest直接运行单元测试: python -m unittest 测试类
        ```
  • 文档测试:Python内置的“文档测试”(doctest)模块可以直接提取注释中的代码并执行测试
    ```
    # 文档测试
    class Dict1(dict):
    '''
    Simple dict but also support access as x.y style.

     >>> d1 = Dict1()
     >>> d1['x'] = 100
     >>> d1.x
     100
     >>> d1.y = 200
     >>> d1['y']
     200
     >>> d2 = Dict1(a=1, b=2, c='3')
     >>> d2.c
     '3'
     >>> d2['empty']
     Traceback (most recent call last):
         ...
     KeyError: 'empty'
     >>> d2.empty
     Traceback (most recent call last):
         ...
     AttributeError: 'Dict' object has no attribute 'empty'
     '''
     def __init__(self, **kw):
         super(Dict, self).__init__(**kw)
    
     def __getattr__(self, key):
         try:
             return self[key]
         except KeyError:
             raise AttributeError(r"'Dict1' object has no attribute '%s'" % key)
    
     def __setattr__(self, key, value):
         self[key] = value

    if name=='main':
    import doctest
    doctest.testmod()
    ```

转载于:https://www.cnblogs.com/thloveyl/p/11469732.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值