51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3147|回复: 2
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-6-30 14:25:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前言
经历了前面一系列的教程,相信你一定跃跃一试了,本篇教程将告诉你如何使用框架(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. 进入 Android Sdk 的 build-tools 下的某一般版本
  2. cd Library/Android/sdk/build-tools/25.0.0
  3. 执行 aapt dump badging <apk地址> | grep -E 'package|launchable-activity'
  4. aapt dump badging /Users/mio4kon/code/python_workspace/appium-lich/apk/v2ex.apk |
  5. grep -E 'package|launchable-activity'
复制代码

appium service
配置完成后,需要开启 appium service
  1. cd project_path
  2. 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. cd Library/Android/sdk/tools/bin
  2. ./uiautomatorviewer
复制代码
此时会打开一个GUI工具


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

我记录了一些即将用到的一些ID信息
  1. com.czbix.v2ex:id/username_tv  进入登录界面ID
  2. com.czbix.v2ex:id/account      账号输入框ID
  3. com.czbix.v2ex:id/password     密码框ID
  4. com.czbix.v2ex:id/sign_in         登录ID
复制代码
在写 pages.yaml文件之前先开启watch_dog
  1. python3 watch_dog.py
复制代码
然后对应上面的信息信息完成 pages.yaml文件
  1. #content of pages.yaml
  2. ---
  3. HomePage:
  4.   dec: 主界面
  5.   locators:
  6.     -
  7.       name: 登录入口
  8.       type: id
  9.       value: com.czbix.v2ex:id/username_tv
  10. LoginPage:
  11.   dec: 登录页面
  12.   locators:
  13.     -
  14.       name: 账户
  15.       type: id
  16.       value: com.czbix.v2ex:id/account
  17.     -
  18.       name: 密码
  19.       type: id
  20.       value: com.czbix.v2ex:id/password
  21.     -
  22.       name: 登录
  23.       type: id
  24.       value: com.czbix.v2ex:id/sign_in
复制代码
保存文件后,就会发现在 page/pages.py中已经生成了控件元素.

剩下的时间就是编写用例的时候了.其实非常简单!

编写用例
在 test/目录下新建一个 test_home 文件
  1. # content of test/test_home.py
  2. class TestLogin:
  3.     def test_login(self, action: ElementActions):
  4.         L.d('test_login')
  5.         account = Steps.get_account()
  6.         action.click(HomePage.登录入口)
  7.         action.text(LoginPage.账户, account[0])
  8.         action.text(LoginPage.密码, account[1])
  9.         action.click(LoginPage.登录)
  10.         assert action.is_toast_show('欢迎回来')
复制代码
其中Steps是我写的专门放steps的文件

  1. # content of test/steps.py
  2. class Steps:
  3.     @staticmethod
  4.     @allure.step(title="获取账号和密码")
  5.     def get_account():
  6.         account = Environment().get_inited_config().account_success
  7.         pwd = Environment().get_inited_config().password_success
  8.         L.d('账号:%s 密码 %s' % (account, pwd))
  9.         return [account, pwd]
复制代码
登录的用例编写完了,是不是很 easy,而且在看 case 的时候也会很清晰明了.

运行
  1. python3 run.py  
复制代码


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

总结

这一系列移动自动化教程也算是结束了,最后我会附上项目的源码,欢迎大家 star 和提 issue.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

  • TA的每日心情
    无聊
    2018-8-8 11:08
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    3#
    发表于 2018-8-8 16:40:24 | 只看该作者
    支持分布式吗?多机运行?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 01:06 , Processed in 0.071582 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表