博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[PYTHON]一个简单的单元測试框架
阅读量:4333 次
发布时间:2019-06-06

本文共 1974 字,大约阅读时间需要 6 分钟。

近期尝试了一下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

你可能感兴趣的文章
C#常见错误解决方法
查看>>
安装cnpm (npm淘宝镜像)
查看>>
Java 面向对象(基础) 知识点总结I
查看>>
读书笔记《自控力》
查看>>
ceph集群搭建Jewel版本
查看>>
HttpClient 解释
查看>>
在Button上面显示图片,去掉Button的默认样式
查看>>
区域生长算法
查看>>
hive学习2(Navicat连接hive)
查看>>
getResourceAsStream的3种路径配置
查看>>
switch语句小练习
查看>>
组合逻辑电路
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
UE4材质是什么样的机制
查看>>
使用QTP录制自带Flight小实例
查看>>
JProfiler学习笔记
查看>>
Loadrunner脚本编程(4)-数据类型操作和字符串操作
查看>>
STL 算法
查看>>
分享:Backbone.js 样例站点与入门指南
查看>>
图的基本算法
查看>>