Maria 项目自动测试的相关实现

接口构的工作大部分完全之后。下面是写自动测试的代码。根据导师的要求,maria 项目基本上算是应用测试,验证 push 和 clone 两个功能可以成功执行就OK了。

测试框架比较

我先做了一些调研,了解了一下 python 下主流的三种测试框架:

py.test
nose
unittest

unittest 是这里面唯一加入在 python 基础类库里面的,也是三者中限制最多最不方便的一个测试平台。其中的测试类必须继承自 unittest.TestCase。它得加上两行模块入口代码来被搜索测试并运行:

if __name__ == '__main__':
    unittest.main()

再说说两个外部测试模块 nose 和 py.test。它们都可以搜索项目的源代码树,寻找项目的所有测试,所以不需要集中的测试列表,尽管它们采用的测试发现规则不太一样。二者都提供了命令行工具,所以不需要自己的测试命令。在代码目录下敲 nosetestspy.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_clonetest_push 分别验证 git clone 、git push 是否成功运行。最后 tearDown 中进行扫尾工作,关闭子进程,删除临时仓库。

把它们封装类主要考虑是,在 setUp 当中开启一个子进程跑 maria 服务器之后,我希望在 tearDown 中能把这个子进程关闭了。

开始我很奇怪的是,setUptearDown 在每个测试方法执行的时候都被调用了,导致了一些问题。我期望是的,setUp 在所有测试执行前只调用一次进行初始化,tearDown 也只在所有测试结束后执行一次。

google 之后发现,不论是 nose 还是 py.test ,它们都是针对每个测试都要执行一次的。这时候我才明白了为啥这些测试框架叫单元测试了。所谓单元测试,每个测试是应该保持独立的。我期望 setUp -> test_clone -> test_push -> tearDown 的执行顺序,让 test_push 使用在 test_clone 创建的仓库,这种依赖关系已经违背了测试之间的独立性。这么一想,代码就好改了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值