最近再浏览Python自动化测试框架,之前接触过unittest,看了篇文章,发现nose貌似更牛逼一些,于是安装试了试,分享一下心得。
nose 项目是于 2005 年发布的,也就是 py.test 改名后的一年。它是由 Jason Pellerin 编写的,支持与 py.test 相同的测试习惯做法,但是这个包更容易安装和维护。尽管 py.test 在某些方面有所进步,目前也很容易安装,但是 nose 仍然保持了易用性方面的声誉。
测试nose是否安装成功,输入nosetests,有提示之类就证明哦了。
编写一个简单的测试用例
在命令行下执行nosetests 即可。
注意:测试代码保存的文件必须以Test或test开头.然后在该目录下执行nosetests
setup和teardown
setup:在测试用例开始时被执行
teardown:在测试用例结束后被执行
nose在文件中如果找到函数setup, setup_module, setUp 或者setUpModule等,那么会在该模块的所有测试执行之前执行该函数。如果找到函数 teardown,tearDown, teardown_module或者 tearDownModule 等,那么会在该模块所有的测试执行完之后执行该函数。
对于上面的代码,nose实际的执行过程是这样的:
setUp()->Testfunc1()->Testfunc2()->tearDown()
nose常用参数
nosetests –v :debug模式,看到具体执行情况,推荐大家执行时用这个选项
nose会捕获标准输出,调试的print代码默认不会打印。nosetest –s 可打开output输出,否则全部通过时不打印stdout。
默认nosetests会执行所有的case,若想单独只执行一个case,执行nosetest --tests 后跟要测试的文件(nosetests后面直接跟文件名,其实也可以直接运行该case)。
nosetests --collect-only -v :不运行程序,只是搜集并输出各个case的名称
nosetests -x :一旦case失败立即停止,不执行后续case
-w ,指定一个目录运行测试。目录可以是相对路径或绝对路径
上述文件执行 nosetests -s 即可看到调用顺序。
nose测试单个文件或用例
nosetests命令后加文件路径来运行单个.py测试文件或指定运行某个case,文件名支持正则匹配
nosetest a.py
运行test_a.py中所有用例
nosetest test_a.py:testfunc
运行test_a.py中的testfunc用例
代码覆盖率统计,要用到coverage,详细的打算再写一篇blog。nosetests--with-coverage执行即可
单侧的目录建议:
这个我还没太高明吧,感觉大致意思就是要对应放置?maybe。
nose的插件:
http://nose-plugins.jottit.com/