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使用正则表达式检测密码强度源码分享
Jun 11 Python
python使用xlrd模块读写Excel文件的方法
May 06 Python
老生常谈python的私有公有属性(必看篇)
Jun 09 Python
Python中进程和线程的区别详解
Oct 29 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
Django用户认证系统 组与权限解析
Aug 02 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
小程序实现日历左右滑动效果
2019/10/21 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python中mechanize库的简单使用示例
2014/01/10 Python
Python实现大文件排序的方法
2015/07/10 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python3多线程知识点总结
2019/09/26 Python
Python笔记之代理模式
2019/11/20 Python
Python基于locals返回作用域字典
2020/10/17 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
客服工作职责
2013/12/11 职场文书
重阳节登山活动方案
2014/02/03 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
简易离婚协议书范本
2014/10/24 职场文书
《风娃娃》教学反思
2016/02/18 职场文书