巴黎的灯光下 发表于 2017-6-30 14:25:53

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

前言
经历了前面一系列的教程,相信你一定跃跃一试了,本篇教程将告诉你如何使用框架(appium-Lich)来进行移动端的自动化测试.

Let’s go

项目结构
先看下项目的目录结构
http://mio4kon.qiniudn.com/14920672562261.jpg

.apk 文件夹下放置想测试的 *.apk 文件
.data/config.ini文件中需要修改与中的内容
.data/page.yaml文件就是系列四中提到的定位元素的文件
.test/conftest.py文件是用于用例前的setup & teardown操作,在系列二中有说过.
注: 中为测试应用的账号密码.

配置项目
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'http://mio4kon.qiniudn.com/14920684039217.jpg
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工具
http://mio4kon.qiniudn.com/14920693891874-1.jpg

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

我记录了一些即将用到的一些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
python3 watch_dog.py然后对应上面的信息信息完成 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)
      action.text(LoginPage.密码, account)
      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 登录的用例编写完了,是不是很 easy,而且在看 case 的时候也会很清晰明了.

运行
python3 run.pyhttp://mio4kon.qiniudn.com/case-2.gif

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

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

51sheng 发表于 2018-8-8 14:18:04

6666

51sheng 发表于 2018-8-8 16:40:24

支持分布式吗?多机运行?
页: [1]
查看完整版本: 移动端自动化测试系列之五——AppiumLich框架使用