移动端自动化测试系列之五——AppiumLich框架使用

AppiumLich框架使用

Posted by Mio4kon on 2017-04-13

前言

经历了前面一系列的教程,相信你一定跃跃一试了,本篇教程将告诉你如何使用框架(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工具

14920693891874

点击蓝色圈圈,就能看到当前手机界面上所有元素的信息了.

我记录了一些即将用到的一些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
14
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
# 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的文件

1
2
3
4
5
6
7
8
9
# 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 的时候也会很清晰明了.

运行

python3 run.py    

case

用例就会跑起来了.跑完之后,会在 report/html中生成测试报告.

总结

这一系列移动自动化教程也算是结束了,最后我会附上项目的源码,欢迎大家 star 和提 issue.

项目地址: https://github.com/mio4kon/appium-lich