Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告


Posted in Python onJanuary 27, 2021

2020年4月补充

鉴于配置自动化测试这套框架确实稍微有点麻烦,许多小伙伴在配置的过程中总是踩坑,最近写了篇简化版的入门教程,不想折腾Android SDK的小伙伴可以移步到那篇文章:https://3water.com/article/169763.htm


概述

本文主要分为以下几个部分

  1. 安装Python3
  2. 安装Python3的Appium库
  3. 安装Android SDK
  4. 安装JDK
  5. 安装Appium
  6. 安装模拟器
  7. 编写测试脚本并生成测试报告

项目示例下载地址: https://github.com/lixk/apptest

正文

一、安装Python3

直接登录Python官网https://www.python.org/,下载最新版本即可。

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

然后安装的时候注意一下安装路径,比如我的安装路径D:\Python37,接下来会用到这个安装路径。

二、安装Python3的Appium库

打开Python安装目录,找到Scripts文件夹,点进去,示例:

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

在地址栏上输入cmd,然后回车,打开控制台:

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

在控制台里输入命令pip install Appium-Python-Client,然后回车

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

看到下图的提示就表明安装成功了

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

三、安装Android SDK

我懒得折腾,所以就直接下载了Android Studio
下载地址
https://developer.android.com/studio/#downloads

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

下载完成开始安装

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

如果需要安装自带的模拟器,就把这一项勾选上,然后Next,接下来选择安装路径,比如我的同样放在D

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

接下来一路Next,到了选择SDK的页面注意一下

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

选择Custom,这样可以只安装自己喜欢的部分,接下来选择主题,当然这个以后可以在Android Studio里边改

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

继续Next,到达定制组件页面,如下图

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

设置一下SDK的安装路径,比如我的是D:\Android\SDK,接下来继续Next…finish。然后就进入了缓慢的下载环节,让它在这儿慢慢的下载吧,下载完成后就好了。我们可以进入下一节了。

四、安装JDK

这里我使用的是JDK8,下载地址
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

接受协议,然后选择对应平台下载即可

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

接下来安装过程比较简单,也是一路Next,注意选择一下安装路径,比如我的安装路径D:\Java\jdk1.8

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

五、安装Appium

官网地址 http://appium.io/

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

点击下载按钮会到GitHub的下载页面,选择对应平台下载

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

Windows就选这个(快捷下载)

安装完成后,启动Appium,host和port默认的即可,然后编辑下配置信息

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

然后点下边那个保存并重启的按钮,然后点第一个Start Server按钮,将会看到

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

如果使用真机测试,插上手机就可以开始编写脚本测试了。但是呢,由于手边没有数据线,就采用模拟器了,所以有了下一节。

六、安装模拟器

这里使用的是夜神模拟器下载地址 https://www.yeshen.com/,之所以不用Android自带的,是因为记得多年前启动一次要好久,然后就再也没用过。
这个也没有什么好说的,也是注意一下安装路径,然后一路下一步就好了。
安装完成后要进行一下简单修改:

  • 打开安装目录,进入到bin目录(比如:D:\Nox\bin
  • 把第三节里安装好的Android SDK里的adb.exe文件(比如我的在D:\Android\SDK\platform-tools目录下)复制到该目录覆盖掉该目录已存在的adb.exe文件
  • 删掉该目录的nox_adb.exe文件,再复制一份adb.exe并重命名为nox_adb.exe
  • 启动模拟器
  • 再该目录打开控制台,执行nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices,看到如下信息就表示成功了

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

在模拟器里安装测试apk文件,这里以一个计算器为例,直接将apk文件拖到模拟器里即可

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

继续在刚刚的控制台窗口里输入aapt dump badging D:\apk\com.youdao.calculator-2.0.0.apk,其中D:\apk\com.youdao.calculator-2.0.0.apk是测试apk的完整路径。

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

可以看到安装包的信息都打印出来了,记录下红框里这两个名称,待会儿写测试脚本的时候要用。
注意,如果模拟器重启了,需要执行第5步的nox_adb.exe connect 127.0.0.1:62001 七、编写测试脚本并生成测试报告

1.创建测试用例目录testcase,在该目录下创建test_app.py文件

import time
import unittest

from appium import webdriver


class MyTests(unittest.TestCase):
 # 测试开始前执行的方法
 def setUp(self):
  desired_caps = {'platformName': 'Android', # 平台名称
      'platformVersion': '4.4.2', # 系统版本号
      'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
      'appPackage': 'com.youdao.calculator', # apk的包名
      'appActivity': 'com.youdao.calculator.activities.MainActivity' # activity 名称
      }
  self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 连接Appium
  self.driver.implicitly_wait(8)

 def test_calculator(self, t=500, n=4):
  """计算器测试"""
  time.sleep(3)
  window = self.driver.get_window_size()
  x0 = window['width'] * 0.8 # 起始x坐标
  x1 = window['width'] * 0.2 # 终止x坐标
  y = window['height'] * 0.5 # y坐标
  for i in range(n):
   self.driver.swipe(x0, y, x1, y, t)
   time.sleep(1)
  self.driver.find_element_by_id('com.youdao.calculator:id/guide_button').click()
  for i in range(6):
   self.driver.find_element_by_accessibility_id('Mathbot Editor').click()
   time.sleep(1)

  btn_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v4.widget.DrawerLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout[3]/android.view.View/android.widget.GridView/android.widget.FrameLayout[{0}]/android.widget.FrameLayout'
  self.driver.find_element_by_xpath(btn_xpath.format(7)).click()
  self.driver.find_element_by_xpath(btn_xpath.format(10)).click()
  self.driver.find_element_by_xpath(btn_xpath.format(8)).click()
  time.sleep(3)

 # 测试结束后执行的方法
 def tearDown(self):
  self.driver.quit()

2.创建run.py文件

import os
import time
import unittest

from HTMLTestRunner import HTMLTestRunner

test_dir = './testcase'
discover = unittest.defaultTestLoader.discover(start_dir='./testcase', pattern="test*.py")

if __name__ == "__main__":
 report_dir = './test_report'
 os.makedirs(report_dir, exist_ok=True)
 now = time.strftime("%Y-%m-%d %H-%M-%S")
 report_name = '{0}/{1}.html'.format(report_dir, now)

 with open(report_name, 'wb')as f:
  runner = HTMLTestRunner(stream=f, title="测试报告", description="本测试报告内容包含超级计算器的简单测试")
  runner.run(discover)

导出测试报告用到了HTMLTestRunner,但是Python3的好像有问题,在网上找了两个修改后支持Python3的, 需要的话可以在本文尾部的示例项目中下载。

3.运行run.py文件
等程序运行完之后即会在test_report目录下生成测试报告

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

在浏览器里打开即可看到报告内容,示例

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

到此,全部完成。如果有空的话可以再补充下Appium的使用,比如元素定位之类的,希望本文能帮到初学自动化测试的同学。
项目示例下载地址 https://github.com/lixk/apptest
艾玛,罗嗦这么多,都八点了还没吃晚饭,好饿,今天就先到这里了。


2019/5/21 补充

如果配置跟上边那几步都一致,确实没问题,结果不能正常运行。那么问题可能出在模拟器配置。下边补充下我这边的模拟器配置。

Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

代码中的'platformVersion': '4.4.2'就是上图中的Android版本。

如果还是有许多人跑不起来,接下来可以考虑抽空录个操作视频,哈哈哈。

到此这篇关于Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告的文章就介绍到这了,更多相关Python3 + Appium + 安卓模拟器实现APP自动化测试内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
在Django的视图中使用form对象的方法
Jul 18 Python
简析Python的闭包和装饰器
Feb 26 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
详解python中*号的用法
Oct 21 Python
Python实现数值积分方式
Nov 20 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
python 实现表情识别
Nov 21 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
一个入门级python爬虫教程详解
Jan 27 #Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 #Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
Jan 27 #Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 #Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 #Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 #Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 #Python
You might like
我的论坛源代码(三)
2006/10/09 PHP
php session安全问题分析
2011/06/24 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
yii的CURD操作实例详解
2014/12/04 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
用jscript启动sqlserver
2007/06/21 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
jQuery技巧总结
2011/01/01 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Django操作session 的方法
2020/03/09 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
感恩母亲节演讲稿
2014/05/07 职场文书
旅游活动总结
2014/08/27 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
公司离职证明标准样本
2014/10/05 职场文书
初中作文评语
2014/12/25 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
化验室安全管理制度
2015/08/06 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL