经历了前面一系列的教程,相信你一定跃跃一试了,本篇教程将告诉你如何使用框架(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
工具获得.
1
2
3
4
5
|
进入 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
1
2
|
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
目录中
1
2
|
cd Library/Android/sdk/tools/bin
./uiautomatorviewer
|
此时会打开一个GUI工具
点击蓝色圈圈,就能看到当前手机界面上所有元素的信息了.
我记录了一些即将用到的一些ID信息
1
2
3
4
|
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
python3 watch_dog.py
然后对应上面的信息信息完成 pages.yaml
文件
1
2
3
4
5
6
7
8
9
10
11
12
13
15
16
17
18
19
20
21
22
23
24
|
# 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
文件
1
2
3
4
5
6
7
8
9
10
|
class :
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的文件
1
2
3
4
5
6
7
8
9
|
class Steps:
@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 的时候也会很清晰明了.
运行
python3 run.py
用例就会跑起来了.跑完之后,会在 report/html
中生成测试报告.
总结
这一系列移动自动化教程也算是结束了,最后我会附上项目的源码,欢迎大家 star
和提 issue
.
项目地址: https://github.com/mio4kon/appium-lich