Python获取函数名

python中获取函数名的情况分为内部、外部。

从函数外部获取的情况比较容易,使用指向函数的对象,然后用__name__属性:

除此之外还可以:

函数外部调用,使用sys模块的方法:

f_code和co_name可以参考python源码解析的pyc生成和命名空间章节。

 

Python循环调用子模块代码更新

上周写了一代循环调用子模块的代码,用了近20行。后又经前辈指点,同样的功能,代码已优化到了不足10行,可见Python真的很强大。

总结:

主要是列表元素直接使用函数名称,仅仅一个功能,就省掉了10行代码。

Python循环调用子模块,并打印当前进度

最近在写MonkeyRunner的测试脚本,因为用于测试,所以要做循环执行,无序执行测试模块,于是写了段无序循环调用子模块的代码。

个人觉得无序循环执行多段代码,应用还算广泛吧,就贴出来了。我的做法是把各段代码封装成函数,然后用for循环进行调用,为了把每轮的测试进度显示出来,就用了for循环嵌套,及内置函数enumerate(items)。

第一个Python脚本完工

耗时4天,终于用Python完成了MonkeyRunner的脚本编写,虽然时间有点久,虽然还有一点小瑕疵,但并不影响使用。这也算是我的第一个“作品”吧,之后再慢慢完善。相信之后的脚本编写起来会快很多,很是期待。

自己做个总结吧,学习Python算算也快有半年了,也该是出点成绩的时候了。

借助这次编写MonkeyRunner脚本的机会,也是狠狠的复习了一下Python,算是学以致用了。

这个脚本主要用到了Python语言中的“函数,循环,序列,文本格式化,文件读写”等,还有Android MonkeyRunner中的截图,触屏事件,按键事件等等。

下一步再加入一些随机取值,无组等功能,让脚本更灵活一些。

MonkeyRunner实例及使用说明

了解了MonkeyRunner,现在上一个简单的实例(理论支持所有Android设备^_^),向左滑动屏幕2次,并在滑动前和滑动后进行截图:

使用方法:将代码拷贝到记事本并保存为.py格式的文件(最好和MonkeyRunner放在同一目录),如Demo.py,然后运行CMD并进入MonkeyRunner目录,使用MonkeyRunner Demo.py运行,看下什么效果?

实例详解:
1.导入模块
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

2.连接当前设备,并返回一个MonkeyDevice对象
device = MonkeyRunner.waitForConnection()

3.截图并保存
result = device.takeSnapshot()
result.writeToFile('./shotbegin.png','png')

4.滑动屏幕2次:
for i in range(1,3):
device.drag((200,300),(100,300),0.1,1)
MonkeyRunner.sleep(1)
说明:这是Python中的一个for循环,意思是遍历1~3(不含3)所有整数,遍历做什么呢?第二行就是我们要做的事情,“drag”就是拖动事件指令,后面的括号里就是参考,表示从第一个坐标开始到一个坐标结束,0.1表示所用时间,最后的1可以理解为采样点,默认为10,这里设置的是1,在本实例中1和10区别不大。第三行就是等待的意思,滑动一次后等待1秒再继续。
截图并保存
result = device.takeSnapshot()
result.writeToFile('./shotend.png','png')
和第三步是一样的,只是保存的名字不一样,这样就实现了测试前和测试后的结果对比。

是不是很简单?

除了实例中的导入,截图,保存截图,滑动屏幕,还有很多方法,只要搞清楚怎么用了,剩下的就是自己排列组合来做成一个个的Case了。

其它方法介绍:

1.安装Android包,注意,此方法返回的返回值为boolean,由此可以判断安装过程是否正常 ;
device.installPackage('myproject/bin/MyApplication.apk')

device.removePackage ('com.example.android.notepad')
print ('卸载成功')
device.installPackage('ApiDemos.apk')
print ('安装成功')

Read More