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)
测试驱动开发的基本概念 为什么会出现测试驱动开发 当有一个新的任务时,往往第一个念头就是如何去实现它呢? 拿到任务就开始编码,一边写,变修改和设计 我已经调试了好几遍,应该不会有问题了,好了,先休息一 ...
随机推荐
- Java虚拟机内存管理原理基础入门
Jdk:Java程序设计语言.Java虚拟机.Java API类库. Jdk是用于支持Java程序开发的最小环境. Jre:Java API类库中的Java SE API子集.Java虚拟机. Jre ...
- MVC6的内置ActionResult类型
BadRequestObjectResult,BadRequestResult http 400 bad request ChallengeResult ContentResult Creat ...
- CSRF攻击与防御
CSRF是什么 CSRF在百度百科中是这么说的:“CSRF(Cross-site request forgery跨站请求伪造,也被称为“one click attack”或者session ridin ...
- spring多数据源的处理 mybatis实现跨库查询
实现Myibatis动态sql跨数据库的处理 Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不 同于常见 ...
- Java的SPI机制与简单的示例
一.SPI机制 这里先说下SPI的一个概念,SPI英文为Service Provider Interface单从字面可以理解为Service提供者接口,正如从SPI的名字去理解SPI就是Service ...
- linux下使用Apache+php实现留言板功能的网站
一.首先我们的linux服务器上要安装Apache和php 请参考:http://www.cnblogs.com/dagege/p/5949620.html 二.关闭防火墙服务,关闭selinux 请 ...
- js有关时间日期的操作
var myDate = new Date();var date_string = myDate.getFullYear()+""+((myDate.getMonth()+1)&l ...
- Android 的 Handler 总结
<一> Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管 ...
- Puppet3在CentOS6.5集群下的安装
环境:3台主机, IP分别为10.211.55.11.12.13 puppet master安装在10.211.55.11 puppet agent安装在10.211.55.11.12.13 1.安装 ...
- Oracle Dataguard的原理与基本配置
最近集团在做灾备方案,用于Oracle的高可用性,在不影响主库性能的前提下,我们选择使用DG的"最大性能"模式. DG是Oracle数据库自带的数据同步功能,其基本原理是将日志 ...