Appium入门指南 - 环境搭建和Case编写

本文档将详细介绍如何搭建 Appium 的运行环境,以及如何编写一个简单的 UI 自动化测试用例。其中,也会穿插讲解一些 Appium 的基本知识。关于 Appium 的更多信息,大家可以查看官方文档。

注意事项:

本文档是在 macOS 系统的基础上讲解相关操作

编程语言选择了:Python 2.7

Appium 是跨平台的 UI 自动化测试框架,支持 Android、iOS 等系统,本次只介绍基于 Android 的自动化测试

安装 Appium

Appium 的安装有两种方式:

1、下载 Appium Desktop,这个是 Appium 的客户端软件,包含了运行 Appium 所需要的一切,下载后安装即可,支持 Mac、Windows、Linux 三大系统。因为安装过程实在是太简单了,所以不做详细说明。
2、通过命令行的方式进行安装,这个比较复杂,需要依次下载安装多种配置/依赖来满足 Appium 的运行条件。着重介绍此种安装方式。

命令行安装

以下命令都是在终端(Terminal)上运行的

1、安装包管理工具 Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2、安装 Node.js

brew install node

3、安装 Appium 服务端

npm install -g appium

4、安装 appium-doctor

npm install -g appium-doctor

5、运行 appium-doctor,检查 Appium 需要的所有依赖是否都满足

appium-doctor --android

其中有几个依赖项是必须要满足的:

Node.js

ANDROID_HOME

JAVA_HOME

adb

android

emulator

$JAVA_HOME/bin

大家可根据这个命令运行结束后的提示信息去完成相应的依赖添加:

Appium入门指南 - 环境搭建和Case编写

6、安装 Appium 客户端

pip install Appium-Python-Client

7、最后,因为需要使用 Python 语言编写自动化测试用例,建议安装 Python 语言的 IDE:PyCharm

脚本编写 脚本编写前的准备工作

1、启动 Appium

(1)如果安装了 Appium Desktop,可直接打开软件点击 "Start" 启动 Appium 服务

Appium入门指南 - 环境搭建和Case编写

(2)如果是通过命令行方式安装的 Appium,则在终端(Terminal)输入:

appium

Appium入门指南 - 环境搭建和Case编写

2、启动模拟器/测试设备连接至电脑

#启动模拟器 emulator @<emulator_name> #测试设备连接至电脑 (1)Settings-Developer options-USB debugging //打开usb调试模式 (2)adb devices //查看手机是否成功连接至电脑

3、安装待测应用到模拟器/测试设备中

adb install <path_to_apk>

本次讲解计算器应用 iClever Calculator Lite 为例,可自行到 Google Play 上下载该应用,包名为:weightloss.constellation.education.tools

创建脚本

在完成以上三步后,打开 Pycharm 或者其他 IDE,新建一个 py 文件,完成自动化测试脚本基础代码的编写。

1、新建 calculator_test.py 文件
2、导入类库和包

#导入unittest测试框架 import unittest #导入appium客户端库 from appium import webdriver #导入time模块 from time import sleep

3、创建一个类 CalculatorTest,继承自 Python 的测试类 unittest.TestCase

class CalculatorTest(unittest.TestCase): pass

unittest 是 Python 的一个单元测试框架,包含了四个部分:

TestFixture

setUp

TestCase

TearDown

TestCase

TestSuite

TestRunner

关于各部分的概念和应用,在下面章节里说明(参见代码注释)。

4、在类中创建三个方法:setUP()、tearDown()、test_case_1(),然后在类外面创建一个程序入口

class CalculatorTest(unittest.TestCase): # pass #SetUP,case运行前的环境初始化 def setUp(self): pass #TearDown,case运行后的环境恢复 def tearDown(self): pass #TestCase,测试用例1 def test_case_1(self): pass #程序入口 if __name__ == '__main__': #TestSuite,将所有测试用例载入suite suite = unittest.TestLoader().loadTestsFromTestCase(CalculatorTest) #TestRunner,运行测试用例 unittest.TextTestRunner(verbosity=2).run(suite)

5、在 setUP() 中添加字典变量 desired_caps,初始化配置,提供建立 Session 所需要的信息

#SetUP,case运行前的环境初始化 def setUp(self): # pass #字典变量,初始化配置,提供建立session的所有必要信息: desired_caps = {} #被测应用平台:iOS/Android desired_caps['platformName'] = 'Android' #被测应用平台版本:adb shell getprop ro.build.version.release desired_caps['platformVersion'] = '8.0.0' #测试设备名:adb devices desired_caps['deviceName'] = 'CB512FCM14' #被测应用包名 desired_caps['appPackage'] = 'weightloss.constellation.education.tools' #被测应用启动时的活动名 desired_caps['appActivity'] = 'com.weightloss.constellation.education.tools.SplashActivityAlias' #服务端等待客户端发送消息的超时时间 desired_caps['newCommandTimeout'] = 150 #在一个session开始前不重置被测程序的状态 desired_caps['noReset'] = True #是否支持uicode的键盘(输入中文需设置) desired_caps['unicodeKeyboard'] = True #以desired_caps作为参数初始化WebDriver连接 #Appium服务器的IP: #端口号:4723 self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) sleep(10)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzsgz.html