zoukankan      html  css  js  c++  java
  • appium 自动化测试框架详读(一)

    appium框架使用的过程记录,开始使用markdown来语法来编写,不知道博客园是否会支持markdown语法

    ***
    1. appium原理
    * appium启动时,创建一个http://127.0.0.1:4723/wd/hub服务端服务端和设备默认使用4724端口进行通信
    * 底层调用UIautoamator工具
    * 服务端给设备一个bootstrap.jar
    * 启动包后会在手机上创建socket服务,暴露4723端口
    * 服务端收到也就是appium收到脚本传递命令,通过电脑4724端口想设备4724端口发送指令
    * bootstrap,jar收到指令后再去点击/滑动操作,完成后再给服务端一个响应,服务端收到响应后再去运行脚本

    ***
    2. 运行appiumdesktop的时候,手机上安装的文件apk是什么
    * unlock,setting,inputmanager三个apk
    * Settings是用来指定appium server的工作方式。
    * Settings只用来控制appium server,不能用于控制被测应用或设备
    *unlock 是用来解锁设备的
    *inputmanager 应该是一个输入管理

    ****

    3. appium api有那些?
    * 定位控件
    * 手势操作
    * 获取相关元素及设备
    * 其他操作,网络/截图
    ***
    4. 课外疑问,安卓的activity究竟是什么
    * 在一个android应用中,一个Activity通常就是一个单独的屏幕
    * 它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
    * Activity之间通过Intent进行通信。
    * Android 是通过一种 Activity 栈的方式来管理 Activity 的,一个 Activity 的实例的状态决定它在栈中的位置。处于前台的 Activity 总是在栈的顶端,当前台的 Activity 因为异常或其它原因被销毁时,处于栈第二层的 Activity 将被激活,上浮到栈顶。当新的 Activity 启动入栈时,原 Activity 会被压入到栈的第二层。一个 Activity 在栈中的位置变化反映了它在不同状态间的转换。

    ****

    5. ui自动化框架目录
    * appium框架目录:
    * appPerf app运行时的性能监控,包括内存和电量cpu
    * common 公共文件,获取yaml内容/报告/截图
    * config 配置文件
    * initdata 数据初始话
    * testModule 测试用例,每一个yaml文件对应一个用例
    * testResult 存放项目运行时需要的文件
    * testRuner 存放项目运行时需要的文件
    * utils 存放一些工具
    ***
    6. 开始使用框架:
    * 在 testModule 目录的 yaml 文件下编写脚本了
    * 选择一部合适的手机,连接电脑,打开开发者选项 USB 调试模式。然后 dos 命令下输入 adb devices 验证是否连接成功,出现设备信息表示成功
    * 打开 appium desktop,然后配置 host 为本地 ip 127.0.0.1 点击 start server
    * 一切准备就绪后,最后我们在 testRunner 目录下运行 run_mttest_ui.py 文件,开始自动 化执行用例

    # 疑问:
    1. @classmethod,
    * 类属性属于类,数据属性属于类的实例
    * 大家看,数据属性name和类属性mode均没有在类中被定义,你要做的,只是在需要的时候使用他们即可.如何预先给属性赋值
    数据属性:
    ```
    class Test:
    pass
    t=Test()
    t.name='notus' 数据属性:
    print t.name
    Test.mode='auto' 类属性
    print Test.mode
    @classmethod #在cal_info函数前加上@classmethon,则该函数变为类方法,该函数只能访问到类的数
    据属性,不能获取实例的数据属性
    def cal_info(cls): #python自动传入位置参数cls就是类本身
    print('这是一个%s'%cls.cal_name) #cls.cal_name调用类自己的数据属性
    ```

    * @staticmethod 静态方法只是名义上归属类管理,但是不能使用类变量和实例变量,是类的工具包放在函数前(该函数不传入self或者cls),所以不能访问类属性和实例属性
    * @property #在cal_add函数前加上@property,使得该函数可直接调用,封装起来

    2. super方法
    *super() 函数是用于调用父类(超类)的一个方法。
    * super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
    * MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

    3. unittest.TestLoader是什么

    * unittest 的 TestLoader 成员下面提供了discover()方法可以通过文件的名称来判断是否为测试用例文件,

    * 如何为用例文件则自动添加到测试套件中

    * 多个独立的测试用例(test case)或者多个独立的测试套件(test suite,可以理解为子套件)可以构成一个

    * 测试套件,那么我们写好了一个用例之后,如果去构建一个测试套件呢。下面介绍几种构建测试套件的方法:
    * 通过unittest.TestSuite()类直接构建,或者通过TestSuite实例的addTests、addTest方法构建
    * 通过unittest.TestLoader类的discover、loadTestsFromTestCase、loadTestsFromModule、loadTestsFromName、loadTestsFromNames这五个方法去构建
    * 通过unittest.makeSuite()、unittest.findTestCases()这两个方法去构建

  • 相关阅读:
    RIGHT-BICEP单元测试——“二柱子四则运算升级版”
    个人项目之“二柱子四则运算升级版”(续)
    个人项目之 “二柱子四则运算”升级版
    “进度条”博客
    课后实验3--四则运算3
    构建之法阅读笔记01
    第二周学习进度
    四则运算2单元测试
    课后实验2--四则运算2
    课后实验1--四则运算
  • 原文地址:https://www.cnblogs.com/YouxiYouxi/p/11365904.html
Copyright © 2011-2022 走看看