近期尝试了一下TDD(測试驱动)的模式。感觉效果不错。在此总结一下,同学们假设有更好的办法,一定要告诉我:)

1. 每一个功能模块(文件),配一个单元測试模块。

以手头这个项目为样例:有LogCat.py, LogModel.py, SceneBuilder.py 三个模块,那么就对应的新建LogCatTest.py, LogModelTest,SceneBuilderTest.py三个文件

2. 每一个函数都对应写一个单元測试例。

比方:在LogCat.py里有三个函数:

def parseDate(l):

    p = "(?P<date>[0-9]+-[0-9]+) "

    match = re.search(p, l)

    s = ''

    if( match is not None):

        s = match.group('date')

    return s



def parsePath(l):

    p = " (?P<path>(\S\S+\/)+\S+)"

    match = re.search(p, l)

    path = ''

    if( match is not None):

        path = match.group('path')

        if path.startswith("assets") is False:

            path = "assets/" + path

    return path

def parseTime(l):

    p = " (?

P<time>[0-9]+:[0-9]+:[0-9]+.[0-9]+) "

    match = re.search(p, l)

    t = None

    if( match is not None):

        s = match.group('time')

        t = datetime.datetime.strptime(s, '%H:%M:%S.%f')

    return t

这几个函数是通过正則表達式解析一行日志中对应变量的。

在LogCatTest.py里。写上对应的測试例:

#LogCatTest.py

from LogCat import *



logs = []

logs.append( '09-01 14:36:10.139 E/cocos2d-x debug info(23244): File loaded(4157 bytes): assets/UI/alpha/HVGA/card/card_turn_2.pvr.ccz')

logs.append( '09-04 15:41:26.895 D/Cocos2d-x debug(16852): File loaded: assets/lang/data/video.txt.dream')

logs.append( '09-04 15:41:26.895 D/Cocos2d-x debug(16852): File loaded: lang/data/video.start.mp3')

logs.append( '09-04 15:41:26.895 D/Cocos2d-x debug(16852): File loaded: assets/version.txt')

def unit_test_parseDate():    

    for l in logs:

        print parseDate(l)



def unit_test_parseTime():

    for l in logs:

        print parseTime(l)



def unit_test_parsePath():

    for l in logs:

        print parsePath(l)

当然,这三个測试例測试的功能类似。能够整成一个。在这里仅仅是举个样例。

3. 在測试模块中,加入main函数, 其功能是通过命令行參数动态载入測试例:

#LogCatTest.py

import traceback

def main():

func = sys.argv[1]

unittest = "unit_test_" + func

globals()[unittest]()





if __name__ == "__main__":

    try:

        main()

    except Exception as e:

        traceback.print_exc()

        sys.exit(1)

3. 在命令行执行:

python LogCatTest.py parsePath,就能够执行对应的測试例了。

这里要注意一个问题。 假设測试例也要从命令行读取參数,须要从sys.argv[2]開始,由于sys.argv[1]作为測试例的名字被占用了。


最新文章

  1. CodeIgniter 3.0问题集锦
  2. Redis 配置文件总结
  3. IOCP入门
  4. linux驱动初探之字符驱动
  5. fir.im Weekly - 如果让你重新做一款APP
  6. Windows下zlib库和libPng库的编译和使用
  7. 【转】c++笔试题
  8. nginx添加第三方模块
  9. 十:Java之泛型
  10. C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(中)
  11. 局部变量,全局变量初始值问题----C与指针练习题4.14.1
  12. sns.pairplot
  13. HttpWebRequest - Asynchronous Programming Model/Task.Factory.FromAsyc
  14. 回文(palindrome)
  15. 漏洞复现-vsftpd-v2.3.4
  16. Linux(CentOS)安装JDK(.tar.gz)并配置
  17. html菜单和课程表
  18. Beta Scrum Day 4 — 听说
  19. 分布式系统的一致性算法------《Designing Data-Intensive Applications》读书笔记13
  20. 记一次git fatal: Unable to find remote helper for &#39;https&#39;问题的解决

热门文章

  1. 基于element的表单渲染器 (el-form-renderer)
  2. 实战:vue项目中导入swiper插件
  3. 关于samsung连接BLE设备的一些资料汇总和开发过程一些经验总结
  4. SpringBoot下支付宝接口的使用
  5. 2015 Multi-University Training Contest 8 hdu 5389 Zero Escape
  6. angular-数据库
  7. sqlite学习笔记11:C语言中使用sqlite之删除记录
  8. 国家人工智能(AI)的美好前景
  9. CentOS Linux 加硬盘,分区和设置自动挂载
  10. vue中的swiper element ui