一、需求分析

需求:一个类 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

好了,交货!

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

最新文章

  1. 从零开始编写自己的C#框架(2)——开发前准备工作
  2. Logistic回归分类算法原理分析与代码实现
  3. UISlider常见属性
  4. Oracle 数据库中不同事务并发访问的问题
  5. [转]利用vertical-align:middle实现在整个页面居中
  6. MySQL中group_concat函数,用符号连接查询分组里字段值
  7. git config配置文件 (共有三个配置文件)
  8. Android多媒体开发-- OpenMax IL简介
  9. 基于easyui的webform扩展
  10. Python创建二维数组(关于list的一个小坑)
  11. MySql数据库命令行操作说明
  12. Java 使用 Map 实现缓存工具
  13. VS2017开发的IDE扩展
  14. ubuntu 16.04 的IP地址变更
  15. CF1129C Morse Code
  16. Bootstrap的简介及使用
  17. Spring学习笔记3——消息队列(rabbitmq), 发送邮件
  18. 常见Java问题
  19. Python 命令行解析工具 Argparse介绍
  20. 自研DCI网络路由交换协议DCIP-白牌交换机时代的企业网络

热门文章

  1. MicroStation VBA基础
  2. db2简单语句记录
  3. Java并发之BlockingQueue 阻塞队列(ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue、PriorityBlockingQueue、SynchronousQueue)
  4. HTML5游戏开发引擎,初识CreateJS
  5. SQL Server 中获取字符串拼音的标量函数实现
  6. Linux下使用NDK编译FFMPEG(libstagefright)
  7. linux线程同步(2)-条件变量
  8. MarkDown插入图片
  9. 理解 OpenStack Swift (2):架构、原理及功能 [Architecture, Implementation and Features]
  10. 准备使用 Office 365 中国版--安装