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
好了,交货!
求求您千万别再提什么别的变态的需求了。
python 测试驱动开发的简单例子的更多相关文章
- python连接mysql数据库简单例子
今天用pyhton2连接本地的mysql数据库,总的来说比较简单,但还是遇到一些小问题 代码如下: # -*- coding: utf-8 -*- import os import MySQLdb i ...
- 测试驱动开发与Python
最近在看一本书<Test-Driven Development with Python>,里面非常详细的介绍了如何一步一步通过测试驱动开发(TDD)的方式开发Web项目.刚好这本书中使用了 ...
- 基于Python的测试驱动开发实战
近年来测试驱动开发(TDD)受到越来越多的关注.这是一个持续改进的过程,能从一开始就形成规范,帮助提高代码质量.这是切实可行的而非天马行空的. TDD的全过程是非常简单的.借助TDD,代码质量会得到提 ...
- python多线程简单例子
python多线程简单例子 作者:vpoet mail:vpoet_sir@163.com import thread def childthread(threadid): print "I ...
- TDD(测试驱动开发)培训录
2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都是复杂问题,改变人,改变一个组 ...
- 原创翻译-测试驱动开发(TDD)
测试驱动开发原则 翻译自<<Expert Python Programming>> 测试驱动开发是指首先编写包含所有测试软件特点的测试集,然后再去开发软件.也就是说,在编写软件 ...
- TDD(测试驱动开发)培训录(转)
本文转载自:http://www.cnblogs.com/whitewolf/p/4205761.html 最近也在了解TDD,发现这篇文章不错,特此转载一下. TDD(测试驱动开发)培训录 2015 ...
- TDD(测试驱动开发)
TDD(测试驱动开发)培训录 2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都 ...
- 测试驱动开发(TDD)
测试驱动开发的基本概念 为什么会出现测试驱动开发 当有一个新的任务时,往往第一个念头就是如何去实现它呢? 拿到任务就开始编码,一边写,变修改和设计 我已经调试了好几遍,应该不会有问题了,好了,先休息一 ...
随机推荐
- JavaScript(二)——语法
1.基本数据类型: 字符串.小数.整数.日期时间.布尔型等. 2.类型转换: 分为自动转换和强制转换,一般用强制转换. 其他类型转换为整数:parseint(): 其他类型转换为小数:parseflo ...
- jquery.validate remote的用法
1,远程返回数据时,一定要返回"true"或者"false",否则就是永远就是验证不通过. 2,remote有两种方式,如下就介绍remote与PHP间的验证( ...
- dubbo-admin-2.5.3 运行报错: Bean property 'URIType' is not writable or has an invalid 解决方法
因为 jdk 是1.8的版本,和 dubbo-admin 存在兼容性问题.所以报错: Bean property 'URIType' is not writable or has an invalid ...
- asp.net服务器控件onclick带参数
服务器控件处理参数随笔 正确: <asp:CheckBox ID="cbComplareProduct" runat="server" Text=&quo ...
- Linux磁盘管理之创建磁盘分区05
一.磁盘基础知识 磁盘安装在计算机上后,在系统读取到硬盘后并不能直接使用,必须经过分区.格式化才能够正确使用.这一次主要是针对磁盘分区进行简单总结,存储设备类型:U盘.光盘.软盘.硬盘.磁带. 硬盘接 ...
- input子系统
input子系统: 像按键.键盘.鼠标.触摸屏.游戏摇杆等设备只有输入没有输出,而且在编程实现其对应的驱动程序时会有很多重复性的代码,内核的设计者将该部分代码抽象出来,驱动工程师只需要复用该 ...
- adroid 目录
安桌程式安装后存在目录:\手机存储\Android\data 一: // 获取当前程序路径 getApplicationContext().getFilesDir().getAbsolutePath ...
- 非常不错的点餐系统应用ios源码完整版
该源码是一款非常不错的点餐系统应用,应用源码齐全,运行起来非常不错,基本实现了点餐的一些常用的功能,而且界面设计地也很不错,是一个不错的ios应用学习的例子,喜欢的朋友可以下载学习看看,更多ios源码 ...
- Linux aclocal
一.简介 二.安装 三.常用指令 1)安装m4 aclocal -I m4 2)查看aclocal的路径 aclocal --print-ac-dir 四.常见问题 1) LIBTOOL is und ...
- 睡觉问题早晚成为我顶头疼的问题。。。-PHP
hi 昨晚又作自己,睡不好整个人都不好... 1.PHP实现页面静态化 二.纯静态化 2.2 实现页面纯静态化的原理 --基本方式 file_put_contents()函数: 使用php内置缓存机制 ...