Airtest启动器的妙用--添加自定义的命令行参数

简介: Airtest启动器的妙用--添加自定义的命令行参数

前言



我们都知道,在命令行运行Airtest脚本时, airtest run test.air  指令后面附带的参数是固定的:


  • --device ,用来指定连接的被测设备
  • --log ,用来指定log内容和截图存放的目录
  • --recording ,运行脚本时进行录屏操作


如果想要在运行脚本的命令中,添加一些自定义的参数,我们就要使用到Airtest的启动器啦。


Airtest启动器的介绍



启动器实际上也是一个 .py 文件,里面所编写的内容,实际上是基于1个叫 AirtestCase 的类,这个类继承了 unittest.TestCase ,其目的在于Airtest在运行用例脚本时,添加所有执行基础Airtest脚本的相关功能。


因此,假如我们需要添加自定的义功能,就只需要在 AirtestCase 类的基础上,往 setup()teardown() 方法中加入自己的代码即可。如果这些设置和功能内容相对固定,可以将这些内容作为一个启动器(launcher),用来在运行实际测试用例之前初始化相关的自定义环境。


from airtest.cli.runner import AirtestCase, run_script
from airtest.cli.parser import runner_parser
class CustomAirtestCase(AirtestCase):
    def setUp(self):
        pass
        super(CustomAirtestCase, self).setUp()
    def tearDown(self):
        pass
        super(CustomAirtestCase, self).tearDown()
if __name__ == '__main__':
    ap = runner_parser()
    args = ap.parse_args()
    run_script(args, CustomAirtestCase)
复制代码


在启动器中添加自定义的命令行参数



了解了启动器的基本含义之后,我们再来看下,如何利用启动器来帮助我们给 airtest run 指令添加自定义的命令行参数。


假设我们需要往命令行传入1个参数,用于指定这个脚本需要运行几次,参数名称假设为 --retry ,那么我们可以这样在启动器的脚本中添加如下内容:


from airtest.cli.runner import AirtestCase, run_script
from airtest.cli.parser import runner_parser
class CustomAirtestCase(AirtestCase):
    def setUp(self):
        # 在air脚本运行之前获取这个自定义的参数
        if self.args.retry:
            self.scope['retry']=self.args.retry
if __name__ == '__main__':
    ap = runner_parser()
    # 添加自定义的命令行参数
    ap.add_argument(
        "--retry", help="The number of times the script will be run")
    args = ap.parse_args()
    run_script(args, CustomAirtestCase)
复制代码


有了启动器之后,我们的 .air 脚本就可以接收到这个命令行参数并对它进行相应的处理了:


# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
auto_setup(__file__)
print("脚本需要运行的次数是:"+retry)
print('参数个数为:'+str(len(sys.argv))+'个参数')
print('参数列表:'+str(sys.argv))
复制代码


带启动器的运行脚本命令



已经准备好启动器脚本和我们的 .air 脚本之后,就可以在命令行使用如下命令,使用我们定义好的启动器来运行我们的  air 脚本啦:


python launcher.py test.air --device Android:///serial_num --log log_path --retry 3
复制代码


网络异常,图片无法展示
|


小结



当然,除了添加自定义的命令行参数以外,Airtest启动器的妙用还非常多,比如添加自定义的变量或者方法,添加一些前置脚本或者后置脚本等等。

相关文章
|
安全 网络安全
10个常用恶意软件检测分析平台
10个常用恶意软件检测分析平台
407 0
|
Java API Maven
Java工具篇之反射框架Reflections
Reflections通过扫描classpath,索引元数据,并且允许在运行时查询这些元数据。 使用Reflections可以很轻松的获取以下元数据信息: - [x] 获取某个类型的全部子类 - [x] 只要类型、构造器、方法,字段上带有特定注解,便能获取带有这个注解的全部信息(类型、构造器、方法,字段) - [x] 获取所有能匹配某个正则表达式的资源 - [x] 获取所有带有特定签名的方法,包括参数,参数注解,返回类型 - [x] 获取所有方法的名字 - [x] 获取代码里所有字段、方法名、构造器的使用权
1759 0
|
监控 Android开发
【Android 开发入门】android studio 控制台打印输出日志
有些情况下,不方便使用断点的方式来调试,而是希望在控制台打印输出日志,使用过Eclipse的同学都知道Java可以使用 System.out.println(""); 来在控制台打印输出日志,但是在android studio中却是不行的,还是有差别的,那应该用什么呢? android.util.Log 在调试代码的时候我们需要查看调试信息,那我们就需要用Android Log类。
3152 0
|
4月前
|
JavaScript 前端开发 IDE
鸿蒙开发:了解布局分析ArkUI Inspector
ArkUI Inspector,知名其意,就是UI检查,它可以让开发者在DevEco Studio中快速的查看一个应用在模拟器或者真机上的UI显示效果,并且可以通过查看多次操作后的界面状态,来快速的分析定位UI界面存在的问题。
鸿蒙开发:了解布局分析ArkUI Inspector
|
8月前
|
搜索推荐 数据可视化 数据挖掘
点晴OA系统:用户体验至上,操作简单易上手
在数字化转型的浪潮中,企业选择办公自动化(OA)系统时,除了关注功能强大与否,更看重系统的用户体验。一个操作复杂、学习成本高的系统,不仅会降低员工的工作效率,还可能影响企业的整体运营。点晴OA系统以“用户体验至上”为核心理念,致力于打造操作简单、易上手的办公平台,帮助企业快速实现高效办公。
148 1
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之在flush操作中报错:"context deadline exceeded (Client.Timeout exceeded while awaiting headers)",该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
1231 2
|
人工智能 运维 监控
智能化运维:AI在IT运维中的应用与挑战
【6月更文挑战第21天】本文将深入探讨AI技术如何革新传统的IT运维领域,通过案例分析展示AI在故障预测、自动化处理和安全监控等方面的应用。同时,文章也将讨论AI运维带来的挑战,包括数据隐私、系统复杂性和成本问题,并提出相应的解决策略。
705 6
|
JSON 测试技术 Apache
解决 JMeter 返回内容中文乱码问题的详细指南
在Apache JMeter性能测试中,遇到中文乱码问题会影响测试效果和报告理解。解决方法包括:1) 修改`jmeter.properties`配置文件,将`sampleresult.default.encoding`设为UTF-8;2) 在HTTP请求中指定`Content-Encoding`为UTF-8,确保请求和响应编码一致;3) 使用后置处理器如JSR223处理响应数据编码;4) CSV数据文件保存为UTF-8并在JMeter中配置相应编码;5) 添加HTTP Header Manager设置`Content-Type`。
|
机器学习/深度学习 资源调度 算法
主动学习(Active Learning)简介综述汇总以及主流技术方案
3.主动学习(Active Learning)简介综述汇总以及主流技术方案
主动学习(Active Learning)简介综述汇总以及主流技术方案