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 相关文章推荐
Python 文件读写操作实例详解
Mar 12 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
python如何在终端里面显示一张图片
Aug 17 Python
python 排序算法总结及实例详解
Sep 28 Python
Python建立Map写Excel表实例解析
Jan 17 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
python selenium firefox使用详解
Feb 26 Python
学python安装的软件总结
Oct 12 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
python PIL模块的基本使用
Sep 29 Python
Python3.10的一些新特性原理分析
Sep 15 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函数
2006/10/09 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
python3操作mysql数据库的方法
2017/06/23 Python
python简单实例训练(21~30)
2017/11/15 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
对Python中的@classmethod用法详解
2018/04/21 Python
python之信息加密题目详解
2019/06/26 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
python实现3D地图可视化
2020/03/25 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
农民工工资支付承诺函
2014/03/31 职场文书
青安岗事迹材料
2014/05/14 职场文书
应届毕业生求职信
2014/05/26 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
小学科学课教学反思
2016/02/23 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书
Python中字符串对象语法分享
2022/02/24 Python