Python单元测试框架比较Nose跟pytest
Python单元测试框架比较Nose和pytest
2013-03-04 磁针石
#承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.com qq 37391319 博客:http://blog.csdn.net/oychw
#版权所有,转载刊登请来函联系
# 深圳测试自动化python项目接单群113938272深圳会计软件测试兼职 6089740
#深圳地摊群 66250781武冈洞口城步新宁乡情群49494279
#自动化测试和python群组: http://groups.google.com/group/automation_testing_python
#参考资料:
# 实验环境:Python 2.6.6 CentOS release 6.3(Final) 32bits
Python 自动化测试RobotFramework做得是不错,但是有些地方还是不够方便。 之一python虽然好学,但是Robot Framework里面的东东一相加,增加了学习难度,不利于自动化测试的开展。之二RobotFramework阉割了很多python的功能。比如for的嵌套很困难,遂同时准备看看python的单元测试框架。
Python的标准库中的unittest和doctest都具备简单的单元测试功能。但是我们需要测试用例tag的功能。这个tag的一个实例:我们的测试用例可以标为high,有些标为middle,有些标为low,可以选择执行为high或者全部用例。这些功能unittest和doctest都没有支持。
于是我们转向外部模块。从pypi上看,外部的单元测试模块主要有pytest和nose。Nose的下载量数倍于pytest。表面上看应该毫无疑问选Nose了。实际使用中,发现Nose实际上并不适合我们的项目。请看下面的具体比较结果。
文档方面:py.test的文档做成了精美的pdf文档,并有详细的实例。Nose的文档只有web的,且几乎找不到什么实例。
测试发现:这块,我们没有很苛刻的要求,Nose和py.test都可以满足。
测试报告:pytest明显比Nose做得好。下面是空测试的实例:
[root@SZX-SRV-AUTOMATIONlib]# nosetests
----------------------------------
Ran0 tests in 0.000s
OK
[root@SZX-SRV-AUTOMATIONlib]# py.test
================================================================test session starts================================================================
platformlinux2 -- Python 2.6.6 -- pytest-2.3.4
collected0 items
================================================================= in 0.00 seconds ==================================================================
[root@SZX-SRV-AUTOMATIONlib]#
测试管理:pytest更比Nose做得好。Pytest打标签:@py.test.mark.slowtest。Nose有类似的功能:@attr('slow')。Pytest没有括号,略显简洁。Setup和teardown这块,Pytest支持函数和模块级别的拆装,Nose只支持函数级别的。
另外fedora的AutoQA项目对pytest和Nose做了详细的比较。参见https://fedoraproject.org/wiki/User:Tflink/AutoQA_nose_pytest_comparison。可见Nose一度领先于pytest,但是现在已经是过去式了。
- 1楼xiaostra2昨天 16:37
- 挽尊!