zoukankan      html  css  js  c++  java
  • 安卓自动化业务层测试接口

    安卓自动化业务层测试接口

    阅读前需知的基本知识:

            1. uiautomator 脚本的执行通过shell命令调起执行,向执行的方法传递参数也是通过shell命令

            2  调起的执行方法所在类必须要继承UIATestCasel类

            3.  调起方法内部,职能通过bundle获取外部传递的参数,而不是通过函数参数的方式传递

    抛出问题:

           在新的自动化测试框架中,业务层属于API层级,非继承于UIATestCasel类(com.android.uiautomator.testrunner.UiAutomatorTestCase)

           1. 业务API不支持外部通过命令或其他方式执行进行业务API,进行测试;如果每次都构造Case来进行业务API的测试,严重影响业务API的测试开发效率

           2. uiautomator执行只支持通过shell,通过bundle传递参数和获取参数;不支持业务API的直接传参方式

           3. shell执行uiautomator,传递参数只能传递字符串;而业务API的参数是多变的,包括int boolean string String[]等

       

    解决方案:

           1. 针对第一个问题,业务API外部无法直接调起问题;使用java反射机制实现业务API的外部调起:

               新建一个统一的业务API访问类Agent,继承UIATestCasel类,使其可以通过外部shell命令调起

               在外部通过命令传递object和method这两个参数到bundle,在Agent类entry方法中获取bundle并解析出要测试的API的类路径和方法名

               根据类路径和方法名,通过反射在本地调用

          

          2.  针对uiautomator执行,传递参数只能传递字符串,不满足业务API的参数个数和类型不定问题;采用添加中间层,处理后传递到业务层API

               首先根据业务API方法,获取其参数类型列表

               根据每个参数的类型和参数的序号({index}),把bundle中‘p{index}’对应的value的值转化成对应类型

                把转化后的所有参数放到一个对象里,然后通过反射加载到业务API

                Demo: adb shell uiautomator runtest IQiyiAppAutomatedTest.jar -c com.qiyi.library.base.Agent#entry -e object ReaderBusiness -e method runtest0 -e p0 [0,1,3] -e p1 [rer,re,re]

           3.  bundle中的值通过shell命令传递,shell命令中有些字符使用,通过自建转义字符列表的方式来解决

                bundle在使用前,进行一次预处理,把当中的自定义转义字符替换掉;现在有的转义字符见下表

    字符对应的转义字符
    空格 {{SPACE}}
    空字符 {{EMPTY}}
    单引号 {{SINGLEQUOTES}}
    双引号 {{DOUBLEQUOTES}}
    左括号 {{LEFTPARENTHESIS}}
    右括号 {{RIGHTPARENTHESIS}}

                 

                 Demo: adb shell uiautomator runtest IQiyiAppAutomatedTest.jar -c com.qiyi.library.base.Agent#entry -e object ReaderBusiness -e method runtest1 -e p0 {{LEFTPARENTHESIS}}who{{LEFTPARENTHESIS}}

     CODE LINK: https://files.cnblogs.com/files/udld/Agent_Uiautomator.rar

              

  • 相关阅读:
    Java面向对象编程 -5
    Java面向对象编程 -4.3
    Java面向对象编程 -4.2
    Java面向对象编程 -4
    Java面向对象编程 -3.3
    Java面向对象编程 -3.2
    Java面向对象编程 -3
    自解压格式的命令
    windows批处理命令学习
    使用自解压格式
  • 原文地址:https://www.cnblogs.com/udld/p/6062322.html
Copyright © 2011-2022 走看看