python 测试驱动开发的简单例子
2024-08-29 22:27:05
一、需求分析
需求:一个类 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
好了,交货!
求求您千万别再提什么别的变态的需求了。
最新文章
- 从零开始编写自己的C#框架(2)——开发前准备工作
- Logistic回归分类算法原理分析与代码实现
- UISlider常见属性
- Oracle 数据库中不同事务并发访问的问题
- [转]利用vertical-align:middle实现在整个页面居中
- MySQL中group_concat函数,用符号连接查询分组里字段值
- git config配置文件 (共有三个配置文件)
- Android多媒体开发-- OpenMax IL简介
- 基于easyui的webform扩展
- Python创建二维数组(关于list的一个小坑)
- MySql数据库命令行操作说明
- Java 使用 Map 实现缓存工具
- VS2017开发的IDE扩展
- ubuntu 16.04 的IP地址变更
- CF1129C Morse Code
- Bootstrap的简介及使用
- Spring学习笔记3——消息队列(rabbitmq), 发送邮件
- 常见Java问题
- Python 命令行解析工具 Argparse介绍
- 自研DCI网络路由交换协议DCIP-白牌交换机时代的企业网络
热门文章
- MicroStation VBA基础
- db2简单语句记录
- Java并发之BlockingQueue 阻塞队列(ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue、PriorityBlockingQueue、SynchronousQueue)
- HTML5游戏开发引擎,初识CreateJS
- SQL Server 中获取字符串拼音的标量函数实现
- Linux下使用NDK编译FFMPEG(libstagefright)
- linux线程同步(2)-条件变量
- MarkDown插入图片
- 理解 OpenStack Swift (2):架构、原理及功能 [Architecture, Implementation and Features]
- 准备使用 Office 365 中国版--安装