前言:
当前大家对“测试的环境怎么写”大体比较注意,你们都需要学习一些“测试的环境怎么写”的相关资讯。那么小编也在网络上收集了一些对于“测试的环境怎么写””的相关文章,希望同学们能喜欢,你们一起来了解一下吧!前言
在之前的文章中,我们介绍过一款移动端自动化测试框架UiAutomator2以及如何基于UiAutomator2框架在移动端设备上开展自动化测试实践,感兴趣的可以查看:
《移动端APP自动化测试框架-UiAutomator2基础》《基于UiAutomator2+PageObject模式开展APP自动化测试实战》
不过UiAutomator2只支持Android设备,不支持iOS设备。想要在iOS设备上开展自动化测试,还得是传统老牌测试框架Appium,也是今天重点要介绍的内容。全篇分为以下几个部分:
1.Appium知多少
Appium简介Appium工作原理Appium如何实现iOS应用自动化?
2.环境搭建
基础环境搭建:JDK、NodeJS、PythoniOS环境搭建:克隆测试APP、WDA安装Appium环境搭建:Appium-Desktop、Appium-inspector、Appium-doctor测试代码编写环境搭建:PyCharm安装
3.项目实战:
编写测试用例并运行在iOS设备上一、Appium知多少1.Appium简介
Appium 是一个开源的自动化测试框架,支持 iOS 和 Android 上 Web App、Native App 和 Hybrid App 的自动化测试。Appium具有极强的灵活性:
测试用例的实现支持多种编程语言,比如 Java、Ruby、Python 等;Appium Server 支持多平台,既有基于 Mac 的版本,也有基于 Windows 的版本;支持 Web App、Native App 和 Hybird App 三大类移动应用的测试;既支持 iOS,也支持 Android;既支持真机,也支持模拟器。2.Appium原理
Appium 可以分成三大部分,分别是 Appium Client、Appium Server 和设备端:
① Appium Server
Appium Server 有 Mac 和 Windows 版本,也就是说 Appium Server 可以运行在 Mac 或者 Windows 电脑上。本质上,Appium Server 是一个 Node.js 应用,接受来自 Appium Client 的请求,解析后通过 WebDriver 协议和设备端上的代理打交道。
对于iOS,Appium Server 会把操作请求发送给 WebDriverAgent(简称 WDA),然后 WDA 再基于 XCUITest 完成 iOS 模拟器或者真机上的自动化操作;对于Android,Appium Server 会把操作请求发送给 appium-UIautomator2-server,然后 appium-UIautomator2-server 再基于 UIAutomator V2 完成 Android 模拟器或者真机上的自动化操作。② Appium Client
Appium Client 其实就是测试代码,使用对应语言的 Client 将基于 JSON Wire 协议的操作指令发给 Appium Server。比如我们前面说的在编写代码前要先在本地安装一个Appium-Python-Client的Python包,这个包实际上就提供了各种各样的API方法,用于编写测试用例:
③ 设备端
设备端很好理解,就是iOS的手机或模拟器、Android的手机或模拟器。
整体来说,Appium 的内部原理可以总结为:Appium 属于 C/S 架构,Appium Client 通过多语言支持的第三方库向 Appium Server 发起请求,基于 Node.js 的 Appium Server 会接受 Appium Client 发来的请求,接着和 iOS 或者 Android 平台上的代理工具打交道,代理工具在运行过程中不断接收请求,并根据 WebDriver 协议解析出要执行的操作,最后调用 iOS 或者 Android 平台上的原生测试框架完成测试。
3.Appium如何实现iOS应用自动化?
Appium通过XCUITest驱动来支持基本的iOS应用自动化。XCUITest是苹果公司在iOS 9.3版推出的自动化框架,Appium利用这个框架来操作iOS设备或模拟器上的应用程序。在这个过程中,Appium对XCUITest的使用是通过WebDriverAgent服务间接完成的。WebDriverAgent(也被叫做WDA)是一个运行在iOS模拟器或设备上暴露XCUITest API的服务,兼容WebDriver。
二、环境搭建
俗话说“万事开头难”、“工欲善其事必先利其器”。在正式开始之前,我们先要搞清楚我们要搭建哪些环境,以及这些环境是用来干嘛的?
首先是硬件环境:这个不必多说,需要一台Mac系统的电脑,一台iOS手机(或模拟器)。
其次是软件环境,软件环境又可以分为:基础依赖环境、iOS环境、Appium环境、测试代码编写环境。
基础依赖环境:能够运行Appium Server的基础依赖环境:JDK、nodeJS;编写测试代码的基础依赖环境:Python语言编写就安装Python、Java语言就安装JDK,这没啥好说的(本文将以Python为例);iOS环境:xcode:打包编写iOS APP项目的工具模拟器:在Xcode中下载ios-test-app项目:用来运行测试的官方demo项目WebDriverAgent:远程控制iOS设备进行测试,可以类比成Android的ADBAppium环境:Appium-Desktop(桌面端)Appium-inspector(定位器)Appium-doctor(环境检测工具)测试代码编写环境:编写测试代码的IDEA:PyCharmAppium-Python-Client包:编写测试用例的方法包;1.基础环境搭建
基础JDK、nodeJS、Python环境搭建不做过多赘述,详情可参照前面的文章:《基础环境搭建,这一篇就够了!》
2.iOS环境搭建
基本步骤如下:
下载安装xcode在xcode中下载iOS模拟器使用xcode编译打包测试APP(以Appium官方的示例APP为例)① 克隆克隆ios-test-app项目并在Xcode中编译打包克隆ios-test-app项目
git clone启动xcode,在xcode中打开项目选择要部署的iOS版本选择模拟器型号开始编译,完成后会自动启动模拟器② 安装WebDriverAgent下载WebDriverAgent:在xcode中按照如下图操作,然后进行编译,具体方法见:iOS UI自动化--WebDriverAgent安装及使用。3.Appium环境搭建① 下载Appium-Desktop
官方网站下载并安装最新版本的 Appium-Desktop,,目前最新的为1.22.3-4版本
② 安装appium-inspector
官方网站下载并安装最新版本的 Appium,根据各自电脑系统下载。例如我的是Mac系统:
③ 安装Appium环境诊断工具appium-doctor
npm install -g appium-doctor
安装报错了,提示淘宝的镜像源过期了
网上找了方法,尝试解决:
再次安装,成功了:
使用“npm list -g”命令可以看到已安装的appium-doctor为1.6.2版本
执行“appium-doctor”检查环境,发现报错“zsh: command not found: appium-doctor”
再次查找解决办法:
执行“npm list -g”查看安装的包的路径:
编辑~/.zprofile文件,将npm包路径导入环境变量(注意:这里用的是zsh,所以编辑.zprofile,如果是bash,则需要编辑.bash_profile)
编辑完成,需要重载一下环境变量
source ~/.zprofile
重新执行“appium-doctor”命令,检测成功:
④ 启动Appium Server
配置好 Appium 的环境依赖后,就可以继续启动 Appium Server 了。点击Appium图标,启动服务:
⑤ 启动appium-inspector
在appium-inspector页面配置Session:
{ "platformName": "iOS", "appium:platformVersion": "17.5", "appium:deviceName": "iPhone 15", "appium:automationName": "XCUITest", "appium:app": "/Users/chenjigang/Library/Developer/Xcode/DerivedData/TestApp-axnnovmblqknzudyvqypxsgdtcjs/Build/Products/Debug-iphonesimulator/TestApp.app"}
点击“Start Session”,启动报错Error:“Failed to create session. An unknown server-side error occurred while processing the command. Original error: Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65 xcodebuild error message:”
在网上查找到的解决方法是要先在手机上安装一个WebDriverAgent(Appium-IOS启动报错):
我前面没安装WebDriverAgent,后来安装以后就正常了(WebDriverAgent具体安装方法见:iOS UI自动化--WebDriverAgent安装及使用)。
再次点击“Start Session”,启动成功!
4.测试代码编写环境搭建
由于我们是以Python编写测试用例作为示例,所以必须安装PyCharm编辑器以及Appium的方法包Appium-Python-Client。
① PyCharm安装
可参考前面的文章《PyCharm2023.3.2破解,亲测有效!》
② 安装Appium-Python-Client包
pip install Appium-Python-Client三、项目实战1.编写第一个测试用例① 初始化设备连接
desired_caps中是设备和APP的信息,也就是appium-inspector初始化配置中填写的内容。
from appium.options.ios import XCUITestOptionsclass MyTests(unittest.TestCase): def setUp(self): """初始化设备""" desired_caps = { "platformName": "iOS", "platformVersion": "17.5", "deviceName": "iPhone 15", "automationName": "XCUITest", "app": "/Users/xxx/Library/Developer/Xcode/DerivedData/TestApp-axnnovmblqknzudyvqypxsgdtcjs/Build/Products/Debug-iphonesimulator/TestApp.app", } options = XCUITestOptions().load_capabilities(caps=desired_caps) self.driver = webdriver.Remote(";, options=options) # 连接Appium self.driver.implicitly_wait(8) def tearDown(self): self.driver.quit()
注意:安装的Appium-Python-Client,自2.3版本后,多了一个options参数:要先导入XCUITestOptions,再调用XCUITestOptions的load_capabilities方法加载设备信息。
更多具体用法见:
② 编写测试用例
在编写用例之前,我们先照着页面捋一下操作思路:
在第一个输入框输入一个数字在第二个输入框输入一个数字点击“Compute Sum”计算两数之和断言输出的计算结果是否正确
def test_calculator(self): integer_a = self.driver.find_element(By.ID, "IntegerA") # 定位第一个输入框 integer_b = self.driver.find_element(By.ID, "IntegerB") # 定位第二个输入框 sum_button = self.driver.find_element(By.ID, "ComputeSumButton") # 定位求和按钮 answer = self.driver.find_element(By.ID, "Answer") # 定位答案元素 integer_a.send_keys("5") # 第一个输入框输入5 integer_b.send_keys("5") # 第二个输入框输入5 sum_button.click() # 点击求和按钮 self.assertEqual(answer.text, "10") # 断言求和是否正确③ 运行测试用例
运行效果如下:
视频加载中...
小结
上述就是我自己亲身实践的具体搭建步骤、以及在搭建过程中遇到的问题和解决办法,算是抛砖引玉了。当然还有很多有待完善的地方,比如测试案例中用到的APP仅仅是一个官方的测试demo,操作步骤也比较简单。你可以运用到实际工作中的测试APP上去,并引入PO面向页面对象设计模式,从而应对更为复杂的测试场景。
Appium的环境搭建确实挺复杂的,快的话可能要一天,慢的话两三天也不一定搞得好,因为往往一个报错,就会卡住很久!
不过不要紧,以下是一些个人经验之谈,在遇到问题时希望能对你有参考意义:
遇到问题,先不要着急,可以先看报错信息,基于经验去解决;经验解决不了,可以在网上搜索其他人是否遇到过同类问题;网上搜不到的,可以咨询身边有经验的同事、朋友或同学,但问题描述需具体、准确,如问题产生的背景、前因后果,报错的信息、截图,已经尝试过的解决方法等;问也问不到人的,那就只能不断尝试各种猜想,不断怀疑,并且基于此种怀疑去不断验证,逐一排除;还有一个极为重要且有效的,就是查看该系统/软件的日志,有报错日志最好,没有报错日志就边操作复现边看日志信息;遇到问题不可怕,是问题,总会有解决办法,一时想不到,不必焦躁,不必死磕,晾一晾,转换一下思路,说不定第二天就会”山重水复疑无路,柳暗花明又一村“!
标签: #测试的环境怎么写