在用monkeyrunner写测试case的时候,逐渐感觉到,测试的case也有碎片话的问题,经常是一个一个的写case,同样也是一个一个的执行,执行的效率其实并不高。在写过的测试脚本形成一定的规模后,将这些脚本有组织的串联在一起,可以自由的组合,打散,这样实用性才会提高。当然这些可以通过做测试框架来解决,但是不是所有的公司都有那么多的人力取开发测试工具的,利用现有的成熟的方案回事多数开发者的第一选择。
对于熟悉unittest的同学们来说,其丰富接口和稳定性,易用性无疑是最好的选择。这里写一下我的认识,权当抛砖引玉吧
MonkeyRunner是基于Jython实现的,其版本是2.6.2,很幸运unittest是默认集成在其中的。那么剩下的事情就很简单了,
#coding=utf-8
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
def setUp(self):
pass
def test_takepic(self):
........
def tearDown(self):
pass
if __name__ == '__main__':
unittest.main()
这个就是一个最基本的测试例子了。unittest支持多种执行的方式,可以执行单独的methmod,也可以执行整个class,也可以创建一个suit,由用户执行选择特定的case脚如到suit中。
如果想用好unittest,一定要掌握官方文档上的说明:http://docs.python.org/library/unittest.html,或者参考一下其他关于python unittest的相关文章,对monkeyrunner中unittest的使用也是有效的。
遇到问题:如果执行的脚本需要在命令行中传递参数,那么一定要在调用unittest.main()之前将这个参数保存下来,并且将其从sys.argv中移除,因为unittest.main也会检查sys.argv,会导致异常。