MonkeyRunner工具介绍

关于MonkeyRunner的介绍,其实网上有很多,百度一下你就能找到,我也是从搜索开始学习的,没有想象中的那么困难,以下是我所学习参考的内容,全部来源于网络,因为除了这篇关于MonkeyRunner的介绍,我还想做后续具体使用和实例的分享,所以此篇只是为后续的计划做铺垫。但至少可以让你对MonkeyRunner有一个具体的了解,这样后面动起手来,要简单的多。

一、什么是monkeyrunner

官网原文:
The monkeyrunner tool provides an API for writing programs that control an Android device or emulator from outside of Android code. With monkeyrunner, you can write a Python program that installs an Android application or test package, runs it, sends keystrokes to it, takes screenshots of its user interface, and stores screenshots on the workstation. The monkeyrunner tool is primarily designed to test applications and devices at the functional/framework level and for running unit test suites, but you are free to use it for other purposes.

网络释义:

monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。

二、monkeyrunner与Monkey的差别
Monkey:
Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流。
monkeyrunner:
monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。

三、monkeyrunner的测试类型

 

官网原文:
The monkeyrunner tool provides these unique features for Android testing:

Multiple device control: The monkeyrunner API can apply one or more test suites across multiple devices or emulators. You can physically attach all the devices or start up all the emulators (or both) at once, connect to each one in turn programmatically, and then run one or more tests. You can also start up an emulator configuration programmatically, run one or more tests, and then shut down the emulator.

Functional testing: monkeyrunner can run an automated start-to-finish test of an Android application. You provide input values with keystrokes or touch events, and view the results as screenshots.

Regression testing - monkeyrunner can test application stability by running an application and comparing its output screenshots to a set of screenshots that are known to be correct.

Extensible automation - Since monkeyrunner is an API toolkit, you can develop an entire system of Python-based modules and programs for controlling Android devices. Besides using the monkeyrunner API itself, you can use the standard Python os and subprocess modules to call Android tools such as Android Debug Bridge.

网络释义:

1、多设备控制(Multiple device control):monkeyrunner API可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。
2、 功能测试(Functional testing): monkeyrunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。
3、 回归测试(Regression testing):monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
4、 可扩展的自动化(Extensible automation):由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,您还可以使用标准的Python os和subprocess模块来调用Android Debug Bridge这样的Android工具。

四、Monkeyrunner运行环境

您可以直接使用一个代码文件运行monkeyrunner,抑或在交互式对话中输入monkeyrunner语句。不论使用哪种方式,您都需要调用SDK目录的tools子目录下的monkeyrunner命令。如果您提供一个文件名作为运行参数,则monkeyrunner将视文件内容为Python程序,并加以运行;否则,它将提供一个交互对话环境。

monkeyrunner的命令语法为:

monkeyrunner -plugin <plugin_jar> <program_filename> <program_options>

关于MonkeyRunner工具的介绍就说这么多,后续会针对MonkeyRunner脚本方式进行说明,也分享下我的经验。

官网原文:http://developer.android.com/tools/help/monkeyrunner_concepts.html

网络资料:http://www.cnblogs.com/yyangblog/archive/2011/03/10/1980086.html

再谈Email-MIME无法安装的解决办法

之前博客中有写Perl模块安装失败的的解决办法,可能很多人看了还是不能解决,我再次整理了一下,影响Bugzilla安装的,主要是Email-MIME模块不能正常安装。而不能安装的主要原因是Email-Simple的版本不对,因为默认Perl提供的Email-Simple版本是2.101,而Bugzilla需要的是2.102,所以就手动安装吧。
1. 下载安装c编译器,推荐dev-cpp(网上很多,可以自己搜索,不想自己找的看本文最后提供的下载地址);

2. 配置环境变量,以WinXP为例:[我的电脑]->[属性]->[高级]->[环境变量]在path里加个你路径,如你的安装路径是c:\dev-cpp,那你就要加上c:\dev-cpp\bin (注意不要删除原来的数据,与原来的数据用;隔开);完成后,在cmd中运行gcc -v 显示出内容表示编译器安装成功。

3. 下载安装dmake的工具(网上很多,可以自己搜索,不想自己找的看本文最后提供的下载地址)下载后解压缩,将里面的dmake.exe和startup的文件夹一起复制到c:\dev-cpp\bin 里;

4. 下载Email::Simple-2.102,可以到cpan.org网站上去搜索,不想自己动手的可以看本文最后提供的下载地址);

5. 开始手动编译步骤,将下载来的Email-Simple-2.102.tar.gz解压,在cmd中进入这个目录,依次执行以下命令:
perl Makefile.pl
make
make test
make install

6. Cmd进入Bugzilla安装目录,执行checksetup.pl,安装Email-MIME,执行ppm install Email-MIME,即可,此时Email-MIME应该可以正常安装成功。若还不能正常安装就检查是否安装了其它版本的Email-Simple,全部分卸载掉,重新执行步骤5~6即可。

所需要的文件下载地址:
dev-cpp:点击下载
Dmake:点击下载
Email-Simple-2.102:点击下载
其实很多问题,网上都能找到办法解决的,只要细心就好,呵呵。

Python问题求助

将数据进行清理并输出时,总是提示:TypeError: 'module' object is not callable,我也仔细检查了代码,没有发现什么异常,向高手们求助,我正在学习Python中,问题应该很简单,只是我是新手,可能还找不到解决的方法。

我的Python代码:

with open('james.txt') as jaf:
data=jaf.readline()
james=data.strip().split(',')
with open('julie.txt') as juf:
data=juf.readline()
julie=data.strip().split(',')
with open('mikey.txt') as mif:
data=mif.readline()
mikey=data.strip().split(',')
with open('sarah.txt') as saf:
data=saf.readline()
sarah=data.strip().split(',')

clean_james = []
clean_julie = []
clean_mikey = []
clean_sarah = []

import sanitize

for each_t in james:
clean_james.append(sanitize(each_t))
for each_t in julie:
clean_julie.append(sanitize(each_t))
for each_t in mikey:
clean_mikey.append(sanitize(each_t))
for each_t in sarah:
clean_sarah.append(sanitize(each_t))

print(sorted(james))
print(sorted(julie))
print(sorted(mikey))
print(sorted(sarah))

sanitize函数代码:

def sanitize(time_string):
if '-' in time_string:
splitter = '-'
elif ':' in time_string:
splitter = ':'
else:
return(time_string)
(mins,secs) = time_string.split(splitter)
return(mins + '.' + secs)

提示的错误:

Traceback (most recent call last):
File "E:\chapter5\chapter-02.py", line 22, in <module>
clean_james.append(sanitize(each_t))
TypeError: 'module' object is not callable

下面的链接是我的代码文件和用到的文本文件:

http://www.kuaipan.cn/file/id_7230306859904272.htm

决定学习Python

从今天开始,学习Python!

从今天开始,做一个有坚持的人!

一个月不行,就两个月……

两个月不行,就三个月……

直接“行”为止!

Testlink 1.9.3 SMTP邮件配置

/* [SMTP] */

/**
* @var string SMTP server name or IP address ("localhost" should work in the most cases)
* Configure using custom_config.inc.php
* @uses lib/functions/email_api.php
*/
$g_smtp_host        = '[smtp.testlink.com]';  # SMTP server MUST BE configured  这里可以有中括号,也可以没有

# Configure using custom_config.inc.php   以下这三处不能有中括号,一般保持一致即可。
$g_tl_admin_email     = 'testlink@testlink.com'; # for problem/error notification
$g_from_email         = 'testlink@testlink.com';  # email sender
$g_return_path_email  = 'testlink@testlink.com';

/**
* Email notification priority (low by default)
* Urgent = 1, Not Urgent = 5, Disable = 0
**/
$g_mail_priority = 5;    #此处邮件发送的优先级,默认为低。

/**
* Taken from mantis for phpmailer config
* select the method to mail by:
* PHPMAILER_METHOD_MAIL - mail()
* PHPMAILER_METHOD_SENDMAIL - sendmail
* PHPMAILER_METHOD_SMTP - SMTP
*/
$g_phpMailer_method = PHPMAILER_METHOD_SMTP;  #保持默认的PHPMAILER_METHOD_SMTP。

/** Configure only if SMTP server requires authentication */
$g_smtp_username    = 'testlink';  # user   #账号和密码,没什么可说的,有的需要加上域名有的不需要。
$g_smtp_password    = '123123123';  # password

/**
* This control the connection mode to SMTP server.
* Can be '', 'ssl','tls'
* @global string $g_smtp_connection_mode
*/
$g_smtp_connection_mode = '';     #SMTP连接模式,默认为空,表示自动,还可选ssl,和tls。

/**
* The smtp port to use.  The typical SMTP ports are 25 and 587.  The port to use
* will depend on the SMTP server configuration and hence others may be used.
* @global int $g_smtp_port
*/
$g_smtp_port = 25;       #SMTP端口号,默认25,根据邮件服务器情况填写。              

// ----------------------------------------------------------------------------