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启动器的妙用还非常多,比如添加自定义的变量或者方法,添加一些前置脚本或者后置脚本等等。

相关文章
|
7月前
|
XML Java 数据库
Flowable入门程序——构建一个命令行程序(一)
Flowable入门程序——构建一个命令行程序
|
2月前
|
存储 缓存 算法
【Conan 入门教程 】了解 Conan2.1 中默认生成器的作用
【Conan 入门教程 】了解 Conan2.1 中默认生成器的作用
48 1
|
7月前
|
XML 存储 API
Flowable入门程序——构建一个命令行程序(二)
Flowable入门程序——构建一个命令行程序
|
9月前
|
Shell
Shell VSCode 基本开发插件(语法提示、错误检测、格式化、运行代码)
Shell VSCode 基本开发插件(语法提示、错误检测、格式化、运行代码)
457 0
|
IDE 开发工具
Airtest启动器的妙用--添加自定义的变量
Airtest启动器的妙用--添加自定义的变量
220 0
|
测试技术 数据库 Python
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好,好歹自己鼓 捣出了,但是时间和效率并不是很高,下次遇到还是老样子。那么本篇通过最简单案例来给给为小伙伴详细讲解、演示一下 unittest 执行顺序。
217 0
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
LyScript 插件命令返回封装
LyScript 自动化插件增加命令行回传参数的封装,由于x64dbg开发文档中提供的命令执行功能无法实现参数回传,导致LyScript插件无法得到内置命令执行后的返回参数,故本人想了一段时间,找到了这个解决方案。
183 0
LyScript 插件命令返回封装
|
消息中间件 NoSQL Java
Hello World细节-场景启动器(starter)|学习笔记
快速学习Hello World细节-场景启动器(starter)
80 0
|
IDE Linux 开发工具
如何修改自己本地的Airtest源码
如何修改自己本地的Airtest源码
247 0
|
存储
Jmeter 常用函数(19)- 详解 __BeanShell
Jmeter 常用函数(19)- 详解 __BeanShell
252 0
Jmeter 常用函数(19)- 详解 __BeanShell