• 《自拍教程47》Python adb重启设备100次


    做Android手机/电视机/车载系统稳定性测试,
    需要进行100次的系统重启,确保启动过程中,不出现卡死起不来,
    或者起来后Home界面异常等情况。
    还有涉及首次使用开机激活界面的测试,要确保每次系统重启,
    只要设备没激活,就得每次都弹出激活界面。


    准备阶段
    1. adb reboot 或者adb shell reboot 命令, 可以实现手机软重启
    2. adb wait-for-device可以实现等待,等待重启后的手机重新adb连接
    3. os.system可以调用以上 adb 命令行工具
    4. 100次,需要一个for循环语句。

    Python批处理脚本形式

    Python只需要用os.system()函数,
    即可快速实现调用各类命令行命令。

    # coding=utf-8
    
    import os
    
    for i in range(1, 101):
        os.system("adb wait-for-device")
        os.system("adb reboot")
        print("系统第%s轮软重启中...请稍候!" % i)
    
    os.system("pause")
    

    os.system("pause"),建议尽量加上,其含义是暂停程序执行,
    等待用户查看脚本执行结果,避免运行完毕后直接自动关闭脚本执行cmd窗口。

    Python面向过程函数形式

    找到可以封装成一个函数块的小代码块儿, 用函数封装起来.
    函数的命名一般建议用"动词", 所以我们命名为: "reboot",
    封装好后, reboot()函数调用即可。

    # coding=utf-8
    
    import os
    
    
    def reboot():  # 封装
        for i in range(1, 101):
            os.system("adb wait-for-device")
            os.system("adb reboot")
            print("系统第%s轮软重启中...请稍候!" % i)
    
    
    reboot()  # 调用
    os.system("pause")
    

    以上是最简单的函数,即将代码块打个包,用一个函数封装起来。
    另外一种形式如下:

    # coding=utf-8
    
    import os
    
    
    def reboot(cycle):  # 封装
        for i in range(1, cycle + 1):
            os.system("adb wait-for-device")
            os.system("adb reboot")
            print("系统第%s轮软重启中...请稍候!" % i)
    
    
    reboot(100)  # 调用并传参
    os.system("pause")
    

    以上这种是更高端的,带参数输入的函数形式的函数,
    其可以控制重启次数,想重启100次,直接传参100即可。

    Python面向对象类形式
    1. 以"一切皆可归类"的思想, 先抽象化出一个类来,
      类名一般建议用"名词", 所以我们命名为"Rebooter",
      代表重启器, 且一般要驼峰式(首字母大写)来规范类的命名。
    2. 养成良好的类的初始化(__init__)的习惯,
      初始化过程中, 可以pass(什么都不做)。
    3. 这个Rebooter类, 目前只需要一个重启的函数(动作功能)就足够了,
      函数的命名一般建议用"动词", 所以我们命名为: "reboot" 。
    4. 类是一个抽象的事物, 必须实例化成具体的对象后,
      才能进行调用, 所以我们实例化并命名成了r_obj, 表明是一个对象.
    5. 实例化成具体对象后, 对象就可以调用reboot这个函数了。
    # coding=utf-8
    
    import os
    
    
    class Rebooter():
        def __init__(self):
            pass
    
        def reboot(self, cycle):
            for i in range(1, cycle):
                os.system("adb wait-for-device")
                os.system("adb reboot")
                print("系统第%s轮软重启中...请稍候!" % i)
    
    
    r_obj = Rebooter()  # 实例化一个对象
    r_obj.reboot(100)  # 用对象来调用函数。
    
    os.system("pause")
    

    代码运行方式

    确保Android设备,通过USB与电脑连接了,
    以上代码的3种实现形式都可以直接运行,
    比如保存为adb_reboot_100.py并放在桌面,
    每次需要截图的时候,双击运行adb_reboot_100.py,
    就可以开始执行脚本了。

    脚本优化方向

    实际自动化测试中,肯定不止这么简单,还需要考虑:

    1. 设备找到后,要考虑用demsg命令截取系统启动的kernel log
    2. 系统起来后,还需要考虑adb logcat截取App层的log。
    3. 系统起来后,还需要考虑adb shell screencap截取Home界面的图片。
    4. 每一轮都需要命名一个文件夹,里边的log的命名都需要有时间戳等。
    5. 软重启是指通过命令实现重启,
      硬重启是通过抠电池或者拔掉切断电源后再上电,实现断电后重启。
      如何用Python实现硬重启呢? 后续课程会讲到。

    更多更好的原创文章,请访问官方网站:www.zipython.com
    自拍教程(自动化测试Python教程,武散人编著)
    原文链接:https://www.zipython.com/#/detail?id=d42a3e82a8814691839042ba3984b26a
    也可关注“武散人”微信订阅号,随时接受文章推送。

  • 相关阅读:
    [ css 计数器 counter ] css中counter计数器实例演示一
    [ css 计数器 counter ] css中counter计数器(序列数字字符自动递增)应用问题讲解及实例演示
    [ css 伪元素 :before :after ] css中before, after伪元素特性表现解释和实例
    [ css 引用 尚需深入研究的引用 ] css中那些令你蛋疼的糟粕(标记:本文引用,但是有很多地方不明白,需要深入研究)
    [ css 伪对象添加 content ] css中content内容生成技术以及应用问题讲解及实例演示
    [ css垂直对齐 vertical-align ] css中 vertical-align属性问题讲解及实例演示
    [ css 外边距 margin ] css中margin外边距合并问题讲解及实例演示
    [ css 权重 !important ] 使用CSS的!important讲解及实例演示
    [ css zoom和transform属性 ] zoom和transform属性中scale属性值之间的区别讲解及实例演示
    [ css 弹性盒子模型 box-flex 及相关属性 ] box-flex属性弹性盒子模型讲解及实例演示
  • 原文地址:https://www.cnblogs.com/zipython/p/12535131.html
Copyright © 2020-2023  润新知