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)
测试驱动开发的基本概念 为什么会出现测试驱动开发 当有一个新的任务时,往往第一个念头就是如何去实现它呢? 拿到任务就开始编码,一边写,变修改和设计 我已经调试了好几遍,应该不会有问题了,好了,先休息一 ...
随机推荐
- MapReduce实例-倒排索引
环境: Hadoop1.x,CentOS6.5,三台虚拟机搭建的模拟分布式环境 数据:任意数量.格式的文本文件(我用的四个.java代码文件) 方案目标: 根据提供的文本文件,提取出每个单词在哪个文件 ...
- Linux文件操作常用命令整理
收集.整理日常系统管理或维护当中的,常用到的一些关于文件操作的命令或需求,后续会慢慢补充.完善! 查看.生成指定目录的目录树结构? [root@DB-Server ~]#tree #当前目录 ...
- 查看ORACLE的实际执行计划
ORACLE的执行计划分为预估执行计划和实际执行计划.其中,你用Toad.PL/SQL Developer.SQL Developer.EXPLAIN PLAN FOR或者SET ATUOTRACE ...
- JavaWeb防止表单重复提交(转载)
转载自:http://blog.csdn.net/ye1992/article/details/42873219 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用 ...
- C#调用SQL Server分页存储过程
以SQL Server2012提供的offset ..rows fetch next ..rows only为例 e.g. 表名:Tab1 ------------------------------ ...
- spring之依赖注入
- df,du,mount
df 查看当前系统中文件系统的使用情况 $df [-aTh]缺省选项查看当前系统的所有文件系统 -a列出所有的信息 -T列出文件系统类型 -hhuman-readable,用合适的单位表示大小 $df ...
- tcp选项TCP_DEFER_ACCEPT
tcp选项TCP_DEFER_ACCEPT http://blog.chinaunix.net/uid-23207633-id-274317.html 之前在项目测试的时候,如果第三次握手发完裸ack ...
- 从vmware下载到Linux环境下jdk和maven的安装
写在前面:个人总结,如有不对请指出 操作环境: 操作系统:window7 企业版 处理器:Intel Core i5-4200U CPU @ 1.6GHz 内存:8G 系统类型:64位操作系统 需要安 ...
- jquery——彩色投票进度条
一.需求 如下图 重点是要实现进度条. 二.分析 html5新增及删除标签一文中提到过html5新增了progress标签.但是肯定有兼容性问题.生成环境不适用,所以要模拟实现. 原理:动态设置< ...