zoukankan      html  css  js  c++  java
  • [技术博客] Android 自动化测试

    [技术博客] Android 自动化测试

    安卓自动化测试工具与平台的搭建

    类似于网页端自动化,安卓测试的自动化也主要是针对控件的自动化。其原理就是通过python(其他语言) 的脚本来代替我们手动完成的任务。所以我们需要的工具就是 python(测试脚本),Appium(安卓自动化测试工具),uiautomatorviewer.bat (定位安卓控件),虚拟机或者真机(运行安卓程序)。

    我们按照自动化测试的过程来介绍工具的使用与安装。

    uiautomatorviewer.bat

    这是 SDK 自带的一个工具,主要作用就是定位安卓的控件的位置,因为 Appium 控制的就是这些控件,或者说是元素。获取元素位置的方法有很多,类似于网页端的 'class', 'xpath' , 'id' 等等。关于这个工具,GitHub 有大神分享了一版加强版的工具,传送门。加强版可以直接定位完全的 xpath 路径,相比通过 class 自己写要方便很多。

    上面是一个查看元素的例子,通过右下方的路径可以十分简单的访问到元素。尤其是对于 React-Native 这种框架式,而不是基于原生安卓的,这样就方便了很多很多。

    Appium 自动化测试工具

    这个工具是目前广泛使用的安卓自动化测试的工具。但是官网好像已经停止更新了,目前好像在 GitHub 维护,传送门 。下载后直接安装,不过貌似只能安装在系统盘。关于 Appium 的具体使用,可以参考这篇博客,传送门 。这里就不过多的叙述具体的操作过程了。

    启动之后是这样的,然后直接运行python脚本就可以看到虚拟机或者真机上 APP 自动的运行了。

    自动化测试的代码

    虚拟机或者真机的配置

    这里准确的来说是,在python 脚本中对虚拟机或者真机的操作。对python 来说,首先安装支持 Appium 运行的包,appium,然后在测试的开始要配置机器,也就是让 Appium 找到机器在哪,链接机器与 Appium,这样就可以通过 Appium来控制 机器了。

    self.desired_caps = {}
                self.desired_caps['platformName'] = 'Android'  # 平台
                self.desired_caps['deviceName'] = '192.168.221.101:5555'
                # self.desired_caps['platformVersion'] = '9.0'  # 系统版本
                # self.desired_caps['app'] = 'E:/autotestingPro/app/UCliulanqi_701.apk'   # 指向.apk文件,如果设置appPackage和appActivity,那么这项会被忽略
                # self.desired_caps['deviceName'] = 'Android Emulator'
                self.desired_caps['appPackage'] = 'com.cnblogandroid'  # APK包名
                self.desired_caps['appActivity'] = '.MainActivity'  # 被测程序启动时的Activity
                self.desired_caps['unicodeKeyboard'] = 'true'  # 是否支持unicode的键盘。如果需要输入中文,要设置为“true”
                self.desired_caps['resetKeyboard'] = 'true'  # 是否在测试结束后将键盘重轩为系统默认的输入法。
                self.desired_caps['noReset'] = True  # true:不重新安装APP,false:重新安装app
                self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", self.desired_caps)
                # 构建虚拟机,用于测试
    

    这样配置之后就可以直接开始写测试代码,控制虚拟机或者真机了。但是我们为了方便,写很多个不同的测试,由于有时候测试无法连在一起,所以我们使用 unittest 框架来写测试代码。该方法的好处是,可以写多个相关或者不相关的测试实例,然后将他们组合起来,具体就是:

    if __name__ == '__main__':
        suite = unittest.TestSuite() # 一个测试实例
        tests = [Test_Blog_HomeWork("test_blog"), test_borad("test_borad")] # 可以加入其它测试
        suite.addTests(tests)
    

    对于自动化测试,我们通常用于重复的操作,或者覆盖性的测试。那么如何判断测试的完整性呢,及代码中有没有出现未运行到的测试呢? unittest 提供了一个 UnittestTextReport 的方法。可以看到测试的情况,为了美观,unittest 还提供了 HTMLTestRunner 通过html的方式显示测试结果。

  • 相关阅读:
    在T-SQL语句中访问远程数据库(openrowset/opendatasource/openquery)
    sqlserver 编辑、修改字段说明(备注) sp_addextendedproperty
    mssqlserver修改表名,列名,添加表列,删除表列,修改表列类型
    C#语法中的select
    SET IDENTITY_INSERT的用法,具体去体验一下
    亲爱的mssql码农们,看看利用sp_addlinkedserver实现远程数据库链接
    Web.config配置文件详解
    jquery分页展示控件:kkpager
    C#给图片加水印,可设置透明度
    C#图片水印类
  • 原文地址:https://www.cnblogs.com/PureMan6/p/10978186.html
Copyright © 2011-2022 走看看