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中的__init__ 、__new__、__call__小结
Apr 25 Python
Python 正则表达式实现计算器功能
Apr 29 Python
浅谈使用Python内置函数getattr实现分发模式
Jan 22 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
对python中的pop函数和append函数详解
May 04 Python
Python continue继续循环用法总结
Jun 10 Python
3分钟学会一个Python小技巧
Nov 23 Python
BP神经网络原理及Python实现代码
Dec 18 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
python利用百度云接口实现车牌识别的示例
Feb 21 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
浅谈Vue.js
2017/03/02 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
基于Python实现用户管理系统
2019/02/26 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Python必须了解的35个关键词
2020/07/16 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
法国家具及室内配件店:home24
2017/01/21 全球购物
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
中专自荐信
2013/10/13 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
2016大学军训心得体会
2016/01/11 职场文书