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 14 Python
python制作最美应用的爬虫
Oct 28 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
Jun 11 Python
PyTorch中Tensor的维度变换实现
Aug 18 Python
Python缓存技术实现过程详解
Sep 25 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
python实现四人制扑克牌游戏
Apr 22 Python
Python requests模块安装及使用教程图解
Jun 30 Python
如何清空python的变量
Jul 05 Python
详解python 内存优化
Aug 17 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
深入浅析php json 格式控制
2015/12/24 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
javascript常用函数(2)
2015/11/05 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
简述Python2与Python3的不同点
2018/01/21 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
产品质量保证书
2014/04/29 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
十岁生日答谢词
2015/01/05 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫