目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下:

 import os
 apk = {'j': 'com.***.test1',
        'h': 'com.***.test2'}
 print 'enter \'j\' to test test1'
 print 'enter \'h\' to test test2'
 #choose apk
 while True:

     test_apk = raw_input('which apk do you want to test?\n(\'h\' or \'j\'):')
     try:
         apk_name = apk[test_apk]
     except KeyError:
         print 'Please enter \'j\' or \'h\'! - -#'
     else:
         break
 #check the input value
 while True:
     event_num = raw_input('How many pseudo random events(-v) do you want?\nenter int num(>0):')
     if event_num.isdigit() and int(event_num) > 0:
         print 'OK, your events are ' + event_num
         break
     else:
         print 'Please enter a number and the number > 0'
 #check the input value
 while True:
     for_time = raw_input('How many times monkey test do you want?\ntimes(>1):')
     if for_time.isdigit() and int(for_time) > 1:
         print 'OK, you want to loop ' + for_time + 'times monkey test'
         break
     else:
         print 'Please enter a number and the number > 1'
 #the log path
 log_path = 'D:\\'
 #the log name
 log_name = 'monkeytestlog.txt'
 #monkey shell script
 monkey_shell = 'adb shell monkey -v -v -v -p '+ apk_name+ ' -v ' + event_num + ' >'+log_path

 def monkeytest():
     print 'now let\'s check your phone'
     phonedevice = os.popen('adb devices').read()
     if phonedevice.strip().endswith('device'):
         print 'OK, your phone get ready,let\'s start moneky test!'
         for i in range(1, int(for_time)+1):
             print 'The', i, 'monkey test starting...'
             os.system(monkey_shell+str(i)+log_name)
             print i, 'complete!'
         print 'OK, moneky test all complete! The log is in D:\\'
     else:
         print 'please check your phone has linked your computer well'

 #find 'adb' command at your os
 sysPath = os.environ.get('PATH')
 if not sysPath.find('platform-tools'):
     print '''please install the android-sdk and put the 'platform-tools' dir in your system PATH'''
 else:

 #kill the 'tadb.exe'
     tadb = os.popen('tasklist').read()
     if tadb.find('tadb.exe') != -1:
         print 'Find \'tadb.exe\', it must be killed!!!!!!'
         os.system('taskkill /im tadb.exe /F')
         print 'OK,the \'tadb.exe\' has been killed, let\'s go on'
         monkeytest()
     else:
         print 'not find \'tadb.exe\',great! go on!'
         monkeytest()

感觉还能继续优化,做个记录。

【初学python】使用python调用monkey测试的更多相关文章

  1. Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

    由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二 ...

  2. 『Python CoolBook』C扩展库_其五_C语言层面Python库之间调用API

    点击进入项目 一.C层面模块添加API 我们仍然操作如下结构体, #include <math.h> typedef struct Point { double x,y; } Point; ...

  3. 详细介绍windows下使用python pylot进行网站压力测试

    windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个安装软件,用来运行python程序,而pylot则是pytho ...

  4. Python Web 性能和压力测试 multi-mechanize

    http://www.aikaiyuan.com/5318.html 对Web服务做Performance & Load测试,最常见的工具有Apache Benchmark俗称ab和商用工具L ...

  5. python笔记之调用系统命令

    python笔记之调用系统命令 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数, ...

  6. python可变参数调用函数的问题

    已使用python实现的一些想法,近期使用python这种出现的要求,它定义了一个函数,第一种是一般的参数,第二个参数是默认,并有可变参数.在第一项研究中python时间,不知道keyword可变参数 ...

  7. Python网络数据采集7-单元测试与Selenium自动化测试

    Python网络数据采集7-单元测试与Selenium自动化测试 单元测试 Python中使用内置库unittest可完成单元测试.只要继承unittest.TestCase类,就可以实现下面的功能. ...

  8. python发布及调用基于SOAP的webservice

    现如今面向服务(SOA)的架构设计已经成为主流,把公用的服务打包成一个个webservice供各方调用是一种非常常用的做法,而应用最广泛的则是基于SOAP协议和wsdl的webservice.本文讲解 ...

  9. 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)

    如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...

随机推荐

  1. CMakeLists.txt

    vtkRendering.libvtkCommon.lib ${VTK_LIBRARIES} vtkRendering vtkCommon

  2. 《Entity Framework 6 Recipes》中文翻译系列 (17) -----第三章 查询之分页、过滤和使用DateTime中的日期部分分组

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-12 分页和过滤 问题 你想使用分页和过滤来创建查询. 解决方案 假设你有如图3 ...

  3. 让你忘记 Flash 的15款精彩 HTML5 游戏

    HTML5 游戏开发是一个热门的话题,开发人员和设计人员最近经常谈论到.虽然不能迅速取代 Flash 的地位,但是 HTML5 凭借它的开放性和强大的编程能力,取代 Flash 是必然的趋势.你会看到 ...

  4. Tomcat server.xml配置

    参考文献:http://www.cnblogs.com/xdp-gacl/p/3734395.html 一.Tomcat配置虚拟主机 方法:在conf/server.xml里配置Host元素,其中na ...

  5. [SAP ABAP开发技术总结]OPEN SQL

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. [设计模式] 5 单例模式 singleton

    转处 http://blog.csdn.net/wuzhekai1985 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.设计模式中运用了面向对象编程语言的重要特性:封装.继承.多 ...

  7. IAP (In-App Purchase)中文文档

    内容转自:http://yarin.blog.51cto.com/1130898/549141 一.In App Purchase概览 Store Kit代表App和App Store之间进行通信.程 ...

  8. MegCup 2017 极客挑战赛 初赛试题

    看着像八卦,数数不是八卦,是29卦 每卦又有29个小弧 所以是29×29个bit 这29×29个bit怎么理解呢?并且从哪一卦开始到哪一卦结束?是先环向层层向里走还是先径向逐卦走? 我想不出来. 我猜 ...

  9. sqoop使用经验总结及问题汇总

    问题导读1.导入数据到HDFS,需要注意什么?2.在测试sqoop语句的时候,如何限制记录数量?3.sqoop导入时什么情况下会多导入一条数据? 一.sqoop 导入数据到HDFS注意事项 分割符的方 ...

  10. zipkin微服务调用链分析

    1.zipkin的作用 在微服务架构下,一个http请求从发出到响应,中间可能经过了N多服务的调用,或者N多逻辑操作, 如何监控某个服务,或者某个逻辑操作的执行情况,对分析耗时操作,性能瓶颈具有很大价 ...