MonkeyRunner从0搭建自己的测试框架的心得与坑(一)

129 阅读3分钟

首先我说一下我自己的情况,我是一个从来没有弄过自动化测试的人,我是做Android开发的,不过简单的测试框架学起来还好不是很费劲。废话不多说直接开始吧。

1、安装python

首先我们得下载python安装包,我下载的是3.7版本的,你们可以随意的下载,链接我就不放了,只要能下载并且安装就好了,下载好python 了之后只是万里长征的第一步

2、安装pycharm

下载好python之后还需要下载pycharm,这个下载好了之后,可能需要注册码要不然用不了,一般百度搜一下也能找到,要是有钱的话可以直接买个永久的。我这边废了就牛二虎之力才完成。(题外话,我是关注微信的一个公众好才获得的免费注册码,还不是永久的,不过已经够我用了,要是自己搞不定可以私信我,咱们再一起探讨一下)到此python就安装好了,接下来就可以开始了。

3、测试用例编写

由于我是做Android开发的,Android相关开发工具的下载安装我就不详细讲解了,不知道的可以百度一下,很多的。

接下来看看测试脚本吧

该有的注释也都有,导包前的 # coding=utf-8 这句话**一定要添加,**一定要添加,一定要添加

接下来的步骤基本就是导包 --> 连接设备 --> 安装apk包(要是之前已经安装了,此步骤可以省略)--> 设置好包名和第一个类的全路径,通过startActivitry启动第一个测试页面 --> 开始测试了。

注意的点,再启动app的时候,需要点时间,这时候需要sleep,由于我是第一次编写很多api使用的还不熟练不知道怎么回事,大家可以自己尝试。

4、录自动脚本

由于新手很多api 使用的不是很熟练,所以有些通过录的脚本来测试。

如何录?在cmd中输入monkeyrunner monkey_recorder.py一般都是会报错的,要是不报错那说明你是天选之子,出错也不用担心,先到\sdk\tools下看看有没有monkey_recorder.py这个文件,要是没有就在相应的目录下创建,

#recorder.py<br>__author__ = 'paul'

from com.android.monkeyrunner import MonkeyRunner as mr

from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder

device = mr.waitForConnection()

recorder.start(device)

将以上代码拷贝进文件保存起来。

然后再monkeyrunner monkey_recorder.py执行这个命令,要是还有问题,错误提示信息

Can't open specified script file

Usage: monkeyrunner [options] SCRIPT_FILE

-s MonkeyServer IP Address.
-p MonkeyServer TCP Port.
-v MonkeyServer Logging level (ALL, FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE, OFF)

就 monkey_recorder.py全路径,

出来这样的一个界面,此时就可以开始录制脚本了,录制结束后点击Export Actions 这个按钮,将录制的文件保存到指定的位置,以备下次用。

播放脚本

录制好了以后就开始播放脚本了,脚本的播放还需要在\sdk\tools下创建 playback.py这个文件

import sys

from com.android.monkeyrunner import MonkeyRunner

CMD_MAP = {

"TOUCH"``: lambda dev, arg: dev.touch(``*``*``arg),

"DRAG"``: lambda dev, arg: dev.drag(``*``*``arg),

"PRESS"``: lambda dev, arg: dev.press(``*``*``arg),

"TYPE"``:``lambda dev, arg:dev.``type``(``*``*``arg),

"WAIT"``:``lambda dev, arg:MonkeyRunner.sleep(``*``*``arg)

}

#Process a single file for the specified device.

def process_file(fp,device):

for line in fp:

(cmd,rest) = line.split(``"|"``)

try``:

#Parse the pydict

rest = eval``(rest)

except``:

print "unable to parse options"

continue

if cmd not in CMD_MAP:

print "unknown command: " + cmd

continue

CMD_MAP[cmd](device, rest)

def main():

file = sys.argv[``1``]

fp = open``(``file``, "r"``)

device = MonkeyRunner.waitForConnection()

process_file(fp,device)

fp.close();

if __name__ =``= "__main__"``:

main()

将以上代码复制进去,就可以了

执行monkeyrunner playback.py 要是还有错误就将playback.py 路径补全就可以了。

以上的测试属于UI的测试,和UI的依赖较大,如果UI有变化的话就需要重新录制脚本或者重新修改脚本

以上要是有什么错误或者不规范的地方请指正,后续还会继续发布新的文章或者修改