近期尝试了一下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]作为測试例的名字被占用了。

转载于:https://www.cnblogs.com/gccbuaa/p/6932674.html

[PYTHON]一个简单的单元測试框架相关推荐

  1. 【Android进阶】Junit单元測试环境搭建以及简单有用

    单元測试的目的 首先.Junit单元測试要实现的功能,就是用来測试写好的方法是否可以正确的运行,一般多用于对业务方法的測试. 单元測试的环境配置 1.在AndroidManifest清单文件的Appl ...

  2. (4.5.4)Android測试TestCase单元(Unit test)測试和instrumentationCase单元測试

    Android单元和instrumentation单元測试 Developing Android unit and instrumentation tests Android的单元測试是基于JUnit ...

  3. 使用maven运行单元測试总结

    maven本身没有单元測试框架,可是maven的default生命周期的test阶段绑定了maven-surefire-plugin插件,该插件能够调用Junit3.Junit4.TestNG等Jav ...

  4. python的unittest測试框架的扩展浅谈

    非常多时候測试框架须要依据測试数据来自己主动生成測试用例脚本,比方接口測试,通过不同參数构建组合去请求接口,然后验证返回结果.假设这样能通过配置excel数据来驱动測试.而不用去写一大堆的測试用例脚本 ...

  5. Android单元測试之JUnit

    随着近期几年測试方面的工作慢慢火热起来.常常看见有招聘測试project师的招聘信息.在Java中有单元測试这么一个JUnit 方式,Android眼下主要编写的语言是Java,所以在Android开 ...

  6. 在Eclipse中使用JUnit4进行单元測试(0基础篇)

    本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数,这些函数的功能可能 ...

  7. iOS单元測试:Specta + Expecta + OCMock + OHHTTPStubs + KIF

    框架选择 參考这篇选型文章,http://zixun.github.io/blog/2015/04/11/iosdan-yuan-ce-shi-xi-lie-dan-yuan-ce-shi-kuang ...

  8. 太白---落燕纷飞第一重 Android单元測试Instrumentation和irobotium

    PS:叫太白---落燕纷飞纯粹好玩(天涯明月游戏画面感,打击感,碰撞尽管做的不尽人意,可是太白这个职业还是不错,用作开头,,做个旁白而已). 这里的单元測试不管是instrumentation还是ir ...

  9. Robotium双client測试框架

    互联网的本质就是信息交换.移动互联网更是如此, 所以很多移动互联网的服务类应用中有着身份地位不同的两种用户(比如:交易中的买家和卖家, 教学中的老师和学生, 打车中的车主和乘客).近期的工作是给公司的 ...

  10. 利用Continuous Testing实现Eclipse环境自己主动单元測试

    当你Eclipse环境中改动项目中的某个方法时,你可能因为各种原因没有执行单元測试,结果代码提交,悲剧就可能随之而来. 所幸infinitest(http://infinitest.github.io ...

最新文章

  1. 计算机频率、内存相关杂谈
  2. ###Fedora下安装Retext
  3. CodeForces - 1036B Diagonal Walking v.2(思维)
  4. 使用 docker 编译运行 abp 项目
  5. 前端学习(1984)vue之电商管理系统电商系统之完成静态属性
  6. 计算机目标导学方法,计算机教学计划
  7. StringBuilder类的对象 c#
  8. Android 开发使用lambda实现 JDK8兼容
  9. 直接学python3_新手应该学python2还是python3?
  10. Magic Battery for Mac(电量显示工具)
  11. vmware给linux虚拟机添加新的分区
  12. ArcGIS技巧】下载偏移影像后纠偏操作
  13. 计算机管理员无法打开软件,win10系统提示管理员已阻止你运行此应用无法打开应用的解决方法...
  14. 美国访问学者生活之行-开车租车及停车
  15. C#和倍福PLC之间的通信
  16. javascript购物车实现详细代码讲解
  17. [附源码]Nodejs计算机毕业设计敬老院信息管理系统Express(程序+LW)
  18. PC虚拟现实应用的性能分析与优化:从CPU角度切入
  19. 5-11 猿课 笔记
  20. mojing手柄遥杆控制

热门文章

  1. 【目标检测】SSD中的hard negative mining
  2. Caffe中deploy.prototxt 和 train_val.prototxt 区别
  3. 训练和测试自己的图像集
  4. 为什么线程切换开销大
  5. solr mysql安装教程_Solr安装使用教程
  6. element ui 选项卡切换_Vue.js + element-ui 扫盲(服务端对大前端的扫盲)
  7. 背包问题 尽可能大和大于某个值 为什么是一样意思
  8. 怎么用editplus写asm文件_本周分享 | 用Typora写markdown文件
  9. 端口抢占处理杀死线程端口
  10. 使用tp5.1写api接口的流程