Python单元测试框架比较Nose跟pytest

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
挽尊!