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 mysqldb连接数据库
Mar 16 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python函数参数操作详解
Aug 03 Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
Python输出指定字符串的方法
Feb 06 Python
关于Django Models CharField 参数说明
Mar 31 Python
Python Scrapy图片爬取原理及代码实例
Jun 12 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
python中pop()函数的语法与实例
Dec 01 Python
Python中的pprint模块
Nov 27 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数组的一些常见操作汇总
2011/07/17 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
vue.js的安装方法
2017/05/12 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
Linux下多个Python版本安装教程
2018/08/15 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
厨师个人自我鉴定范文
2014/04/19 职场文书
会议室标语
2014/06/21 职场文书
美术课外活动总结
2014/07/08 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年文员工作总结
2014/11/18 职场文书
综合测评个人总结
2015/03/03 职场文书
学校学期工作总结
2015/08/13 职场文书
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python