zoukankan      html  css  js  c++  java
  • 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
    

    好了,交货!

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

  • 相关阅读:
    CentOS系统更换软件安装源aliyun的
    判断手机电脑微信 js
    MFC HTTP
    阿里云 镜像 源 debian
    debian root 可以远程登陆
    java-dispose方法
    深入理解JAVA序列化
    Junit单元测试--01
    算法期末考试
    矩阵连乘 动态规划
  • 原文地址:https://www.cnblogs.com/hhh5460/p/5858619.html
Copyright © 2011-2022 走看看