• python 测试驱动开发的简单例子


    一、需求分析

    需求:一个类 MyClass,有两个功能:add, sub

    1.先功能设计

    # myclass.py
    
    class MyClass(object):
        # 加法
        def add(self): 
            pass
            
        # 减法
        def sub(self): 
            pass
            
    

    2.再功能测试

    import unittest
    from myclass import MyClass
    
    class mytest(unittest.TestCase): 
        # 初始化
        def setUp(self): 
            self.mc = MyClass()
            
        # 退出清理
        def tearDown(self): 
            pass
            
        # 测试加法
        def test_add(self): 
            self.assertEqual(3, self.mc.add(1, 2))
            
        # 测试减法
        def test_sub(self): 
            self.assertEqual(1, self.mc.sub(2, 1))
            
            
    if __name__ =='__main__': 
        unittest.main()
    

    3.再功能实现

    # myclass.py
    
    class MyClass(object):
        def __init__(self):
            super().__init__()
            
        def add(self, x, y): 
            return x + y
            
        def sub(self, x, y): 
            return x-y
            
    

    4.进行测试

    $ python myclass_test.py
    

    OK,现在可以向客户交货了。

    老板发话,大家幸苦了,明天放假休息一天。

    一切都很美好!

    二、需求有变

    等等,客户半夜给老板打电话,说有些东西要变一下。

    说好的休一天假泡汤了

    客户说,1+1=2没有问题,但如果是'1'+'1'='11'是不允许的

    这尼玛什么变态的需求啊!好吧,客户是上帝

    1.修改功能测试

    import unittest
    from myclass import MyClass
    
    class mytest(unittest.TestCase): 
        # 初始化
        def setUp(self): 
            self.mc = MyClass()
            
        # 退出清理
        def tearDown(self): 
            pass
            
        # 测试加法
        def test_add(self): 
            self.assertEqual(3, self.mc.add(1, 2))
            self.assertRaises(ValueError, self.mc.add, '1', '2') # 两个数都不是数字,则需要报错
            
        # 测试减法
        def test_sub(self): 
            self.assertEqual(1, self.mc.sub(2, 1))
            
            
    if __name__ =='__main__': 
        unittest.main()
    

    2.修改功能实现

    # myclass.py
    
    class MyClass(object):
        def __init__(self):
            super().__init__()
            
        def add(self, x, y): 
            #return x + y
            number_types = (int, float, complex)
            if isinstance(x, number_types) and isinstance(y, number_types):
                return x + y
            else:
                raise ValueError
            
        def sub(self, x, y): 
            return x-y
            
    

    3.进行测试

    $ python myclass_test.py
    

    好了,交货!

    求求您千万别再提什么别的变态的需求了。

  • 相关阅读:
    java简单实现MD5加密
    Java用freemarker导出Word 文档
    java 反射(*)
    java解析XML
    JDBC程序实例
    web前端开发-博客目录
    虚拟主机配置
    WAMP运行原理
    WAMP配置
    web前端性能优化总结
  • 原文地址:https://www.cnblogs.com/hhh5460/p/5858619.html
Copyright © 2020-2023  润新知