[PYTHON]一个简单的单元測试框架

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

时间: 2024-11-12 17:44:58

[PYTHON]一个简单的单元測试框架的相关文章

简单单元測试思想

一个项目又非常多模块组成,当我们每次完毕一个模块的时候,就应该測试该功能是否 可以执行正确.然后再写下一个模块,不要等全部模块写完了再总体測试,这样到时候非常 难找到问题(当然高手除外). 所以作为一个project师,写測试用例是一个主要的技能. 那怎样写測试用例呢? 事实上就是使用自己的模块,看执行的结果是否跟期望的结果一致. 比方例如以下,写了一个add函数,要測试它,我们写一个test_add函数. #include <stdio.h> int add(int a,int b) { r

C语言单元測试

对于敏捷开发来说,单元測试不可缺少,对于Java开发来说,JUnit非常好,对于C++开发,也有CPPUnit可供使用,而对于传统的C语言开发,就没有非常好的工具可供使用,能够找到的有这么几个工具: CuTest -- CuTest(Cute Test)是一个很easy的C语言单元測试工具.在使用它的时候,仅仅须要包括两个文件“CuTest.c CuTest.h”,然后就能够写測试用例,进行測试了.它对用例差点儿没有管理功能,报表输出也很easy,能够用来试验单元測试的基本想法. CUnit -

[iOS翻译]《iOS7 by Tutorials》在Xcode 5里使用单元測试(上)

简单介绍: 单元測试是软件开发的一个重要方面.毕竟,单元測试能够帮你找到bug和崩溃原因,而程序崩溃是Apple在审查时拒绝app上架的首要原因. 单元測试不是万能的,但Apple把它作为开发工具包的一部分,不仅让你创作的APP更稳定,并且提供了一致.有趣的用户体验,这些都是让用户给你五星评价的源泉.iOS7提供了一个升级的单元測试框架.让你在Xcode中执行单元測试更为easy.当你完毕这一章节,你将学会怎样给现有app加入測试--并有可能培养出对编写測试的热爱! /* 本文翻译自<iOS7

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

单元測试的目的 首先.Junit单元測试要实现的功能,就是用来測试写好的方法是否可以正确的运行,一般多用于对业务方法的測试. 单元測试的环境配置 1.在AndroidManifest清单文件的Application节点下.引入单元測试使用的库 2.在AndroidManifest清单文件与Application节点平行的节点中.加入instrumentation节点 以下是一个完整的配置的代码 <manifest xmlns:android="http://schemas.android.

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

本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数,这些函数的功能可能非常强大,但我们在程序中仅仅用到该函数的一小部分功能,而且经过调试能够确定,这一小部分功能是正确的.可是,我们同一时候应该确保每个函数都全然正确,由于假设我们今后假设对程序进行扩展,用到了某个函数的其它功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情.所以说,每编写完一个函数之后,都应该对这

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-jia-xuan-xing/,尽管结论不一定全然适用,可是关于框架对照的地方还是值得阅读的.基于这篇文章,排除Kiwi框架之后,决定參考一些项目的源码,了解他们使用的測试方面的框架. 首先,參考https://github.com/artsy/eigen开源项目,其内部总体结构很完整,开发流程也很

ios单元測试之GHUnit

1.相同创建一个測试的project, 2.通过cocoaPod来下载GHUnit框架,或者到github上下载.由于这个框架是开源的第三方框架. 同一时候加入QuartCore.framework(或者加入:GHUnitios.framework框架). 3.在项目的Build Setting 中国搜索other linker Flags,并将它的值设置为"-ObjC-all_load",这个表示连接外面oc框架在编译之后. 4.改动一下启动的入口文件(即为:main.m 函数):不

ios的单元測试OCUnit以及更新了之后的XCTestCase

1.像一般创建项目的步骤一样.创建一个用于測试的项目或者打开一个待測试的项目. (oc是5.0之前所使用的測试,如今用的是XCtestCase,默认会创建一个主的測试类.曾经版本号可能非常多步骤省去) 例如以下:我们能够看到一个text中的測试文件,如今全部測试类都是继承XCTestCase类. 2.写入对应的測试用例在測试类,測试类中对要測试的类须要进入对应的类的头文件,这个是理所应当的.然后执行"执行測试".快捷键:command+U或者product-> test. 以下是

Android 进行单元測试难在哪-part3

原文链接 : HOW TO MAKE OUR ANDROID APPS UNIT TESTABLE (PT. 1) 原文作者 : Matthew Dupree 译文出自 : 开发技术前线 www.devtf.cn 译者 : chaossss 校对者: tiiime 状态 : 完毕 在 Android 应用中进行单元測试非常困难.有时候甚至是不可能的.在之前的两篇博文中,我已经向大家解释了在 Android 中进行单元測试如此困难的原因.而上一篇博文我们通过分析得到的结论是:正是 Google 官