一、需求分析
需求:一个类 MyClass,有两个功能:add, sub
1.先功能设计
# myclass.pyclass MyClass(object): # 加法 def add(self): pass # 减法 def sub(self): pass
2.再功能测试
import unittestfrom myclass import MyClassclass 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.pyclass 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 unittestfrom myclass import MyClassclass 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.pyclass 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
好了,交货!
求求您千万别再提什么别的变态的需求了。