一、需求分析

需求:一个类 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 测试驱动开发的简单例子的更多相关文章

  1. python连接mysql数据库简单例子

    今天用pyhton2连接本地的mysql数据库,总的来说比较简单,但还是遇到一些小问题 代码如下: # -*- coding: utf-8 -*- import os import MySQLdb i ...

  2. 测试驱动开发与Python

    最近在看一本书<Test-Driven Development with Python>,里面非常详细的介绍了如何一步一步通过测试驱动开发(TDD)的方式开发Web项目.刚好这本书中使用了 ...

  3. 基于Python的测试驱动开发实战

    近年来测试驱动开发(TDD)受到越来越多的关注.这是一个持续改进的过程,能从一开始就形成规范,帮助提高代码质量.这是切实可行的而非天马行空的. TDD的全过程是非常简单的.借助TDD,代码质量会得到提 ...

  4. python多线程简单例子

    python多线程简单例子 作者:vpoet mail:vpoet_sir@163.com import thread def childthread(threadid): print "I ...

  5. TDD(测试驱动开发)培训录

    2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都是复杂问题,改变人,改变一个组 ...

  6. 原创翻译-测试驱动开发(TDD)

    测试驱动开发原则 翻译自<<Expert Python Programming>> 测试驱动开发是指首先编写包含所有测试软件特点的测试集,然后再去开发软件.也就是说,在编写软件 ...

  7. TDD(测试驱动开发)培训录(转)

    本文转载自:http://www.cnblogs.com/whitewolf/p/4205761.html 最近也在了解TDD,发现这篇文章不错,特此转载一下. TDD(测试驱动开发)培训录 2015 ...

  8. TDD(测试驱动开发)

    TDD(测试驱动开发)培训录 2014年我一直从事在敏捷实践咨询项目,这也是我颇有收获的一年,特别是咨询项目的每一点改变,不管是代码质量的提高,还是自组织团队的建设,都能让我们感到欣慰.涉及人的问题都 ...

  9. 测试驱动开发(TDD)

    测试驱动开发的基本概念 为什么会出现测试驱动开发 当有一个新的任务时,往往第一个念头就是如何去实现它呢? 拿到任务就开始编码,一边写,变修改和设计 我已经调试了好几遍,应该不会有问题了,好了,先休息一 ...

随机推荐

  1. yii2 gridview 是否显示某列案例

    作者:白狼 出处:http://www.manks.top/article/yii2_gridview_visible 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...

  2. Tomcat 的使用学习

    一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...

  3. [Java]Hessian客户端和服务端代码例子

    简要说明:这是一个比较简单的hessian客户端和服务端,主要实现从客户端发送指定的数据量到服务端,然后服务端在将接收到的数据原封不动返回到客户端.设计该hessian客户端和服务端的初衷是为了做一个 ...

  4. android中基于HTML模板的方式嵌入SWF

    继上一篇 利用webview实现在andorid中嵌入swf 这篇继续说说通过html模板的方式来嵌入SWF,这样做的好处最直观的就是可以把html,swf和android代码串起来,交互操作很方便( ...

  5. Javascript之旅——第四站:parseInt中要注意的坑

    前些天信用卡站点要接入一个新功能,不过还真比较坑爹,asp站点,大家都知道信用卡的背面是有一个有效期的,在对接银行中这个信息 一定是要传给银行做数据校验,用户在语音输入信用卡有效期后,系统会做一个有效 ...

  6. PHP 取前一天或后一天、一个月时间

    //获得当前时间     //date()格式化时间返回String类型.     date("Y-m-d H:i:s") $current_date = date(’Y-m-d’ ...

  7. HTML的基本代码第一课

    打开DREAMWEAVER,新建HTML,如下图: 其中body的属性: bgcolor---页面背景颜色 text--文字颜色 topmargin--上页边距 leftmargin--左叶边距 ri ...

  8. Iterator(迭代器)的使用

    迭代对于我们搞Java的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator ...

  9. linux GD库安装

    GD 安裝第一部需要做的是先要安裝 GD 到系統內,而安裝 GD 前需要安裝 jpeg-6b, libpng, zlib, freetype.以下是下载网址:GD 2.0.33jpeg-6blibpn ...

  10. Eclipse安装python注意事项

    第一次用Eclipse来开发python,在安装环境时走了很多弯路,下面记录下正确的安装方法: 1.下载Eclipse与jdk.(注意jdk与Eclipse要么都是32位,要么都是64位) 2.安装好 ...