Python脚本在Appium库上对移动应用实现自动化测试


Posted in Python onApril 17, 2015

 采用Appium进行自动化的功能性测试最酷的一点是,你可以使用具有最适合你的测试工具的任何一门语言来写你的测试代码。大家选择最多的一个测试编程语言就是Python。 使用Appium和Python为iOS和Android应用编写测试代码非常容易。

在这篇博文中我们将详细讲解使用Appium下的Python编写的测试的例子代码对一个iOS的样例应用进行测试所涉及的各个步骤,而对Android应用进行测试所需的步骤与此非常类似。

开始,先自https://github.com/appium/appiumfork并clone Appium,然后按照安装指南,在你的机器上安装好Appium。

我还需要安装Appium的所有依赖并对样例apps进行编译。在Appium的工作目录下运行下列命令即可完成此任务:
 

$ ./reset.sh --ios

编译完成后,就可以运行下面的命令启动Appium了:
 

$ grunt appium

现在,Appium已经运行起来了,然后就切换当前目录到sample-code/examples/python。接着使用pip命令安装所有依赖库(如果不是在虚拟环境virtualenv之下,你就需要使用sudo命令):
 

$ pip install -r requirements.txt

接下来运行样例测试:
 

$ nosetests simple.py

既然安装完所需软件并运行了测试代码,大致了解了Appium的工作过程,现在让我们进一步详细看看刚才运行的样例测试代码。该测试先是启动了样例应用,然后在几个输入框中填写了一些内容,最后对运行结果和所期望的结果进行了比对。首先,我们创建了测试类及其setUp方法:
 

classTestSequenceFunctions(unittest.TestCase):
 
  defsetUp(self):
    app=os.path.join(os.path.dirname(__file__),
              '../../apps/TestApp/build/Release-iphonesimulator',
              'TestApp.app')
    app=os.path.abspath(app)
    self.driver=webdriver.Remote(
      command_executor='http://127.0.0.1:4723/wd/hub',
      desired_capabilities={
        'browserName':'iOS',
        'platform':'Mac',
        'version':'6.0',
        'app': app
      })
    self._values=[]

“desired_capabilities”参数用来指定运行平台(iOS 6.0)以及我们想测试的应用。接下来我们还添加了一个tearDown方法,在每个测试完成后发送了退出命令:
 

deftearDown(self):
  self.driver.quit()

最后,我们定义了用于填写form的辅助方法和主测试方法:

 

def_populate(self):
  # populate text fields with two random number
  elems=self.driver.find_elements_by_tag_name('textField')
  foreleminelems:
    rndNum=randint(0,10)
    elem.send_keys(rndNum)
    self._values.append(rndNum)
 
deftest_ui_computation(self):
  # populate text fields with values
  self._populate()
  # trigger computation by using the button
  buttons=self.driver.find_elements_by_tag_name("button")
  buttons[0].click()
  # is sum equal ?
  texts=self.driver.find_elements_by_tag_name("staticText")
  self.assertEqual(int(texts[0].text),self._values[0]+self._values[1])

就是这样啦!Appium的样例测试代码中还有许多Python的例子。如果你对使用Nose和Python来运行Appium测试有任何问题或看法,烦请告知。

Python 相关文章推荐
17个Python小技巧分享
Jan 23 Python
python flask实现分页效果
Jun 27 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
python实现电子书翻页小程序
Jul 23 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
python绘制规则网络图形实例
Dec 09 Python
基于python实现对文件进行切分行
Apr 26 Python
Python高并发解决方案实现过程详解
Jul 31 Python
用python绘制樱花树
Oct 09 Python
Python中生成器和yield语句的用法详解
Apr 17 #Python
使用Python脚本在Linux下实现部分Bash Shell的教程
Apr 17 #Python
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 #Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 #Python
在Docker上开始部署Python应用的教程
Apr 17 #Python
使用Python装饰器在Django框架下去除冗余代码的教程
Apr 16 #Python
在服务器端实现无间断部署Python应用的教程
Apr 16 #Python
You might like
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
Python读取YUV文件,并显示的方法
2018/12/04 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
python获取地震信息 微信实时推送
2019/06/18 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
初中学生期末评语
2014/04/24 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
婚庆司仪开场白
2015/05/29 职场文书
初中生物教学随笔
2015/08/15 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript