[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]作为測试例的名字被占用了。
[PYTHON]一个简单的单元測试框架的更多相关文章
- Google开源单元測试框架Google Test:VS2012 配置
由题目可知,Google Test(简称gtest)是Google公布的一个开源C/C++測试框架,被应用于多个开源项目及Google内部项目中,包括Chrome浏览器.LLVM编译器架构.Proto ...
- hibernate 单元測试框架
hibernate在写数据库配置文件时很的不确定,必须进行必要的測试保证数据库结构的正确性.所以能够应用junit进行測试. 使用junit很easy,eclipse仅仅须要右键项目新建一个junit ...
- C语言单元測试
C语言单元測试 对于敏捷开发来说,单元測试不可缺少,对于Java开发来说,JUnit非常好,对于C++开发,也有CPPUnit可供使用,而对于传统的C语言开发,就没有非常好的工具可供使用,能够找到的有 ...
- [iOS翻译]《iOS7 by Tutorials》在Xcode 5里使用单元測试(上)
简单介绍: 单元測试是软件开发的一个重要方面.毕竟,单元測试能够帮你找到bug和崩溃原因,而程序崩溃是Apple在审查时拒绝app上架的首要原因. 单元測试不是万能的,但Apple把它作为开发工具包的 ...
- 【Android进阶】Junit单元測试环境搭建以及简单有用
单元測试的目的 首先.Junit单元測试要实现的功能,就是用来測试写好的方法是否可以正确的运行,一般多用于对业务方法的測试. 单元測试的环境配置 1.在AndroidManifest清单文件的Appl ...
- 谈谈单元測试之(二):測试工具 JUnit 3
前言 上一篇文章<为什么要进行烦人的单元測试?>讨论了一下现阶段软件开发中,程序猿们測试情况的现状.这篇文章中,我打算介绍一下单元測试的工具(插件).而且推荐大家以后在开发中,真正的用上单 ...
- (4.5.4)Android測试TestCase单元(Unit test)測试和instrumentationCase单元測试
Android单元和instrumentation单元測试 Developing Android unit and instrumentation tests Android的单元測试是基于JUnit ...
- 使用maven运行单元測试总结
maven本身没有单元測试框架,可是maven的default生命周期的test阶段绑定了maven-surefire-plugin插件,该插件能够调用Junit3.Junit4.TestNG等Jav ...
- python的unittest測试框架的扩展浅谈
非常多时候測试框架须要依据測试数据来自己主动生成測试用例脚本,比方接口測试,通过不同參数构建组合去请求接口,然后验证返回结果.假设这样能通过配置excel数据来驱动測试.而不用去写一大堆的測试用例脚本 ...
随机推荐
- vue 过滤器使用的传参说明
在table中,需要对obj的数据类型进行文字转换,例如后台接口返回的姓别值:1,2.其中需要页面根据字典需要把1=>男,2=>女进行转换. 以前的习惯是每一个过滤方法都写一个方法进行转换 ...
- Vue框架Element UI教程-axios请求数据
Element UI手册:https://cloud.tencent.com/developer/doc/1270 中文文档:http://element-cn.eleme.io/#/zh-CN gi ...
- Javascript的jsonp原理
Javascript的jsonp原理 首先JSON是一种基于文本的数据交换方式,或者叫做数据描述格式 当一个网页在请求JavaScript文件时则不受是否跨域的影响,凡是拥有”src”这个属性的标 ...
- Tomcat样例安全漏洞
[漏洞描述] Tomcat在使用的时候一般都直接官网下载源代码包直接使用. 默认情况下,Tomcat源码包里面包含了 examples 这个目录,这个目录主要实现一些样例页面的访问. 比如: ...
- poi API大全
一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二. HSSF概况 HSSF 是 ...
- Css学习总结(2)——60个有用CSS代码片段
1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...
- 新建Eclipse工作空间,复制原有的配置(转)
方法一: File->Switch workspace->Other...,按下图选择 只复制简单的配置,如cvs之类的信息是不会复制的. 方法二: 在方法一的基础上做如下操作 将新建的w ...
- grep常见使用方法总结
grep -E 'l\{2,\}' 2.txt grep -E 'h(ell|a)o' test.txt grep '[a-z]\{5,\}' test.txt grep -xf a.txt b.tx ...
- Android中通过ViewHelper.setTranslationY实现View移动控制(NineOldAndroids开源项目)
我们知道有不少开源project,能实现非常多不错的效果.前几天,我看了一个效果,刚好项目中也用到了这个jar包. 没事挖一挖 学一学(一说到挖一挖.那么问题来了.挖掘机技术究竟哪家强 ),看看不错的 ...
- 从头认识java-16.4 nio的读与写(ByteBuffer的使用)
这一章节我们来讨论一下nio的读与写. 1.nio的读 package com.ray.ch16; import java.io.IOException; import java.io.RandomA ...