• Airtest新手升级:一个相对完整的纯.py脚本是怎样子的


    1. 前言

    一直以来,Airtest的教程都倾向于编写 .air 脚本,但本质上,它还是python脚本来的。今天我们就来补上这个缺口,一起来看下一个相对完整的纯 .py 脚本是什么样子的。

    2. 例子一:纯py的Airtest脚本

    有时候,我们只是想借助Airtest连接设备的功能,然后实现一些小任务,比如简单的装包任务等,而不是截一堆图片做自动化测试。

    这种情况下,我们只需要简单编写一个纯py脚本即可:

    # -*- encoding=utf8 -*-
    __author__ = "AirtestProject"
    
    from airtest.core.api import *
    from airtest.cli.parser import cli_setup
    
    def get_app_screen_shot(apk_file, package_name):
        """ 
            Connect an android device, automatically complete the app installation, open, screenshot, close, uninstall.
            Finally you will get a screenshot from app in logdir.
    
            Args:
                apk_file: apk file route in your windows computer.
                package_name: package_name of your app.
    
            Returns: None
        """
    
        # 连接设备以及初始化工作 log文件夹默认生成在当面目录下 
        auto_setup(__file__, logdir=True, devices=["Android:///",],)
        # 唤醒手机屏幕
        wake()
        # 通过windows上apk包体下载app到手机上
        install(apk_file)
        # 启动下载好的app
        start_app(package_name)
        # 等待5s app完全启动
        sleep(5)
        # 截图 并保存到logdir路径下
        snapshot("screen_shot.png")
        # 关闭app
        stop_app(package_name)
        # 卸载app
        uninstall(package_name)
    
    if __name__ == '__main__':
        # 设置apk文件路径以及对应包体名称
        APK_FILE = r"C:\Users\AirtestProject\Desktop\NeteaseCloudMusic_Music_official_8.6.50.211229222733_32.apk"
        PACKAGE_NAME = "com.netease.cloudmusic"
        try:
            get_app_screen_shot(APK_FILE, PACKAGE_NAME)
        except Exception as err:
            # 记录报错到logdir下的log.txt文件中,并截图保存发生错误时的手机屏幕
            log(err, desc="Finale Error", snapshot=True)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    1)纯py脚本的设备连接

    对于纯py脚本,我们需要在脚本里面,明确写明连接设备的脚本 。而.air脚本,如果有使用auto_setup(file),则会自动帮我们连接第一台Android设备。这也是刚从.air脚本刚刚切换成纯py脚本的同学,经常容易忽略的一点。

    所以上述示例中,我们在auto_setup接口里面明确连接了Android设备,当然,Airtest连接设备,还有很多种方式,感兴趣的同学可以参考我们官方教程文档中,Airtest连接设备脚本的介绍章节:

    https://airtest.doc.io.netease.com/IDEdocs/airtest_framework/2_connect_device/ 。

    2)纯py脚本的log保存

    类似的还有纯py脚本的log保存,也需要我们在脚本开头时,明确写明。是否保存log,取决于同学们最终想不想生成报告。因为报告的生成,是依赖于脚本运行log的。

    如果我们不保存log,则最后我们也就没有办法依赖于log来生成测试报告。

    3)airtest的核心api

    上述简单的装包测试任务中,涉及到一些Airtest核心API,比如:

    • 唤醒屏幕:wake()
    • 安装应用:install()
    • 启动应用:start_app()
    • 截图:snapshot()
    • 卸载应用:uninstall()

    我们可以从Airtest的核心API文档中,来熟悉这部分的内容:https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.api.html 。

    3. 例子二:纯py的Poco脚本

    说完了纯py的Airtest脚本,当然少不了我们纯py的Poco脚本啦。下述示例中,包含了连接设备、初始化Android poco、简单的poco操作、记录报错到log里,最后生成测试报告。

    # -*- encoding: utf-8 -*-
    
    from airtest.core.api import *
    from airtest.report.report import simple_report
    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    
    def demo():
        # 连接设备以及初始化工作 log文件夹默认生成在当面目录下 
        auto_setup(__file__, logdir=True, devices=["Android:///",],)
        # 初始化poco
        poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
        # 执行一些操作 确保手机app已登录并跳转到app初始化界面
        try:
            # 以下操作执行:我的-》我喜欢的音乐-》点击播放
            poco(text="我的").click()
            poco(text="我喜欢的音乐").click()
            # 灵活结合ide提供的poco ui树获取播放按钮name属性值 
            poco(name="com.netease.cloudmusic:id/minPlayBtn").click()
        except Exception as err:
            # 记录报错到logdir下的log.txt文件中,并截图保存发生错误时的手机屏幕
            log(err, desc="Finale Error", snapshot=True)
        # 无论运行是否成功 输出报告
        finally:
            # 默认生成html报告到脚本所在的同级目录下
            simple_report(__file__, logpath=True)
    
    if __name__ == '__main__':
        demo()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    1)记录报错到日志中

    示例中,采用了try-except-finally的语法,即尝试做一些poco操作之后,不论成功失败,最后都会生成测试报告。

    需要注意的是,在except中,我们使用log接口记录了报错到日志里面。这样做的好处是,万一try里面有某个步骤失败了,不会因为报错被try捕捉了,而不在报告里面体现出来。

    不使用log接口记录报错:

    图片

    图片

    使用log接口记录报错:

    图片

    图片

    图片

    2)纯py脚本生成报告

    Airtest支持使用 simple_report 和 LogToHtml 来生成测试报告。在纯py脚本里面,我们特别需要注意,脚本开头时,log内容保存在哪里,生成报告的时候,就要指向去哪里找log内容,避免出现生成不了报告、生成了错误的报告等情况。

    4. 小结

    今天我们讲解了2个简单的纯py脚本的小例子,希望想从.air脚本,改成纯py脚本的同学,可以多多练习。


    资源分享

    下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    【综述】Transformers in Remote Sensing: A Survey
    计算机毕设项目论文介绍(Java智慧物业管理系统为例)
    docker 开启Remote API 访问 2375端口
    yolov8旋转目标检测部署教程(附代码c++/python)
    希尔排序超详细讲解C语言
    十秒看懂computed和watch的区别 (vue的简单计算和复杂监听)
    站群服务器的特性和好处是什么
    Autovue集成全过程
    JVM详解
    MyBatis的快速入门
  • 原文地址:https://blog.csdn.net/wx17343624830/article/details/127885574