|
前言
经历了前面一系列的教程,相信你一定跃跃一试了,本篇教程将告诉你如何使用框架(appium-Lich)来进行移动端的自动化测试.
Let’s go
项目结构
先看下项目的目录结构
.apk 文件夹下放置想测试的 *.apk 文件
.data/config.ini文件中需要修改[name]与[account]中的内容
.data/page.yaml文件就是系列四中提到的定位元素的文件
.test/conftest.py文件是用于用例前的setup & teardown操作,在系列二中有说过.
注: [account]中为测试应用的账号密码.
配置项目
config.ini
首先先按照上面说的,配置被测试的应用apk,以及data/config.ini中的内容.
如果不知道应用的 app_package (包名)和 app_activity (启动类名),可以通过 aapt工具获得
- 进入 Android Sdk 的 build-tools 下的某一般版本
- cd Library/Android/sdk/build-tools/25.0.0
- 执行 aapt dump badging <apk地址> | grep -E 'package|launchable-activity'
- aapt dump badging /Users/mio4kon/code/python_workspace/appium-lich/apk/v2ex.apk |
- grep -E 'package|launchable-activity'
复制代码
appium service
配置完成后,需要开启 appium service
- cd project_path
- appium --address 127.0.0.1 --port 4723 --log "appium.log" --log-timestamp --local-timezone --session-override
复制代码
此时服务开启,并在项目下生成了日志文件 appium.log
pages.yaml
最后我们需要定位元素.
手机打开测试apk后,使用 uiautomatorviewer来查看元素信息.
uiautomatorviewer 工具位于 <android-sdk>/tools/bin 目录中
- cd Library/Android/sdk/tools/bin
- ./uiautomatorviewer
复制代码 此时会打开一个GUI工具
点击蓝色圈圈,就能看到当前手机界面上所有元素的信息了.
我记录了一些即将用到的一些ID信息
- com.czbix.v2ex:id/username_tv 进入登录界面ID
- com.czbix.v2ex:id/account 账号输入框ID
- com.czbix.v2ex:id/password 密码框ID
- com.czbix.v2ex:id/sign_in 登录ID
复制代码 在写 pages.yaml文件之前先开启watch_dog
然后对应上面的信息信息完成 pages.yaml文件
- #content of pages.yaml
- ---
- HomePage:
- dec: 主界面
- locators:
- -
- name: 登录入口
- type: id
- value: com.czbix.v2ex:id/username_tv
- LoginPage:
- dec: 登录页面
- locators:
- -
- name: 账户
- type: id
- value: com.czbix.v2ex:id/account
- -
- name: 密码
- type: id
- value: com.czbix.v2ex:id/password
- -
- name: 登录
- type: id
- value: com.czbix.v2ex:id/sign_in
复制代码 保存文件后,就会发现在 page/pages.py中已经生成了控件元素.
剩下的时间就是编写用例的时候了.其实非常简单!
编写用例
在 test/目录下新建一个 test_home 文件
- # content of test/test_home.py
- class TestLogin:
- def test_login(self, action: ElementActions):
- L.d('test_login')
- account = Steps.get_account()
- action.click(HomePage.登录入口)
- action.text(LoginPage.账户, account[0])
- action.text(LoginPage.密码, account[1])
- action.click(LoginPage.登录)
- assert action.is_toast_show('欢迎回来')
复制代码 其中Steps是我写的专门放steps的文件
- # content of test/steps.py
- class Steps:
- @staticmethod
- @allure.step(title="获取账号和密码")
- def get_account():
- account = Environment().get_inited_config().account_success
- pwd = Environment().get_inited_config().password_success
- L.d('账号:%s 密码 %s' % (account, pwd))
- return [account, pwd]
复制代码 登录的用例编写完了,是不是很 easy,而且在看 case 的时候也会很清晰明了.
运行
用例就会跑起来了.跑完之后,会在 report/html中生成测试报告.
总结
这一系列移动自动化教程也算是结束了,最后我会附上项目的源码,欢迎大家 star 和提 issue.
|
|