Maria 项目自动测试的相关实现
2014-09-08 21:38
183 查看
接口构的工作大部分完全之后。下面是写自动测试的代码。根据导师的要求,maria 项目基本上算是应用测试,验证 push 和 clone 两个功能可以成功执行就OK了。
unittest 是这里面唯一加入在 python 基础类库里面的,也是三者中限制最多最不方便的一个测试平台。其中的测试类必须继承自
再说说两个外部测试模块 nose 和 py.test。它们都可以搜索项目的源代码树,寻找项目的所有测试,所以不需要集中的测试列表,尽管它们采用的测试发现规则不太一样。二者都提供了命令行工具,所以不需要自己的测试命令。在代码目录下敲
我选择了 py.test,因为它有很漂亮的官方文档,还是彩色的终端输出。。不过后来在使用的过程中,最终还是转投了nose和unittest阵营。主要考虑还是兼容性,使用nose,可以不改代码直接跑unittest。
在 方法
把它们封装类主要考虑是,在
开始我很奇怪的是,
google 之后发现,不论是 nose 还是 py.test ,它们都是针对每个测试都要执行一次的。这时候我才明白了为啥这些测试框架叫单元测试了。所谓单元测试,每个测试是应该保持独立的。我期望
测试框架比较
我先做了一些调研,了解了一下 python 下主流的三种测试框架:py.test nose unittest
unittest 是这里面唯一加入在 python 基础类库里面的,也是三者中限制最多最不方便的一个测试平台。其中的测试类必须继承自
unittest.TestCase。它得加上两行模块入口代码来被搜索测试并运行:
if __name__ == '__main__': unittest.main()
再说说两个外部测试模块 nose 和 py.test。它们都可以搜索项目的源代码树,寻找项目的所有测试,所以不需要集中的测试列表,尽管它们采用的测试发现规则不太一样。二者都提供了命令行工具,所以不需要自己的测试命令。在代码目录下敲
nosetests或
py.test就可以自动检索测试案例并执行。这一点挺好的。
我选择了 py.test,因为它有很漂亮的官方文档,还是彩色的终端输出。。不过后来在使用的过程中,最终还是转投了nose和unittest阵营。主要考虑还是兼容性,使用nose,可以不改代码直接跑unittest。
maria 自动测试实现
主要测试类的构造如下:class TestMaria(unittest.TestCase): def setUp(self): def tearDown(self): def test_clone(self): def test_push(self):
在 方法
setUp中建立空仓库,然后用 subprocess 运行一个 maria 服务器,
test_clone和
test_push分别验证 git clone 、git push 是否成功运行。最后
tearDown中进行扫尾工作,关闭子进程,删除临时仓库。
把它们封装类主要考虑是,在
setUp当中开启一个子进程跑 maria 服务器之后,我希望在
tearDown中能把这个子进程关闭了。
开始我很奇怪的是,
setUp和
tearDown在每个测试方法执行的时候都被调用了,导致了一些问题。我期望是的,setUp 在所有测试执行前只调用一次进行初始化,tearDown 也只在所有测试结束后执行一次。
google 之后发现,不论是 nose 还是 py.test ,它们都是针对每个测试都要执行一次的。这时候我才明白了为啥这些测试框架叫单元测试了。所谓单元测试,每个测试是应该保持独立的。我期望
setUp -> test_clone -> test_push -> tearDown的执行顺序,让
test_push使用在
test_clone创建的仓库,这种依赖关系已经违背了测试之间的独立性。这么一想,代码就好改了。
相关文章推荐
- svn提交自动更新服务器端web项目测试站点(使用svn的hooks实现)
- 利用Ant实现项目自动构建测试备份并发布到项目web
- 利用Ant实现项目自动构建测试备份并发布到项目web(2)
- 利用Ant实现项目自动构建测试备份并发布到项目web(3)
- 利用Ant实现项目自动构建测试备份并发布到项目web(1)
- git+maven+nexus实现测试机自动发布项目
- 利用Ant实现项目自动构建测试备份并发布到项目web(4)
- 利用Ant实现项目自动构建测试备份并发布到项目web
- 重写struts标签,实现错误输入项目背景色自动变化。
- 初探vcIDE背后的秘密-为vc项目写makefile,实现自动独立编译
- ant+junit实现TDD,自动测试
- 构建基于Trac的自动测试系统(二):安装相关的Trac插件
- java动态代理类,测试,实现AOP,在执行target回调方法前后插入相关代码处理
- DotNet 项目开发文档的自动生成和相关工具的使用
- 中国特色管理类软件项目开发之权限必杀技 -- 权限配置自由设定、实现智能化自动检测校验权限配置
- 企业服务的项目模版--一个实现自动注册服务的跨进程缓存的例子
- 用Ant实现Java项目的自动构建和部署
- 正确实现Visual Studio 2008部署项目自动卸载
- [原创] 利用OBserve模式实现相关类的事件自动处理
- winrar实现自动备份攻略(一)--备份VC++项目的一个样例