循环执行的实例,非常有趣的自动化脚本

文章资讯 2020-06-15 01:11:37

循环执行的实例,非常有趣的自动化脚本

今天我们来学习1个非常有趣的oco实例。在这个示例中,我们将学习到以下小知识:1.如何过滤非报错的log信息,让你的log窗口不再密密麻麻
2.连接设备、初始化oco、打开应用这几个脚本顺序应该怎么放
3.循环执行1个测试动作,直到满足某个条件为止
4.多次执行同一脚本,并且每一次执行都生成1份测试报告下文的例子中用到的demo可以在我们官网上下载到(链接:htts:oco.adthedocs.ioenlatestsourcedococo-examleindex.html)。
1.过滤非报错的log信息
默认情况下,在IDE执行测试脚本的时候,log查看窗口会打印出所有等级的日志信息,包含[DEBUG]、[INFO]、[WARNING]和[ERROR]等等。如果你不想这些非报错的日志信息过多占据log查看窗的位置,并且干扰到你提取有效的报错日志;你可以在脚本代码开头加上对日志信息等级的设定:
__author__="Airtest"imortlogging
logger=logging.getLogger("airtest")
logger.setLevel(logging.ERROR)logging模块是Python内置的标准模块,主要用于输出运行日志。它还可以设置输出日志的等级、日志保存路径、日志文件回滚等。
在这里我们主要用到设置输出日志的等级这个方法,仅输出日志等级为[DEBUG]的日志信息:可以看到,把输出日志信息的级别改成[ERROR]以后,整个脚本运行过程中只有少量初始化信息输出,更方便查看报错信息。
2.如何安排连接设备、初始化oco和打开应用的脚本顺序
很多新手在使用oco的时候,都容易把连接设备、初始化oco和打开应用的脚本顺序搞乱,导致出现一大堆奇妙的报错。
比如大家最常见的:“远程主机强迫关闭了一个现有的连接”、“socketconnectionoken”等等。
最正确的顺序是:先连接设备(一般在auto_setu接口里面连接)–>再打开应用(一般用start_a接口)–>等应用开启完毕,最后才初始化oco。
#-*-encoding=utf8-*-
__author__="Airtest"
fromairtest.co.aiimort*#连接设备
auto_setu(__file__,logdir=True,devices=["Android:127.0.0.1:5037emator-5554?ca_method=JAVACAP"])#启动应用
start_a("com.NetEase")
slee(6.0)#初始化oco
fromoco.drivers.unity3dimortUnityPoco
oco=UnityPoco()oco("btn_start").cck()所以下次写oco脚本的时候,千万记住要检查下这几条代码的顺序,避免产生不必要的报错。
3.多次执行某个测试动作
ython给我们提供了多个循环方法,比如while循环、for循环等,还有个特别一点的循环叫嵌套循环,可以让我们在while循环里面使用for循环。
在我们之前的推文“1篇文章带你了解oco的所有基本功能”中,我们有简单介绍如何遍历元素,那时候用的就是for循环:
forstarinoco("layDragAndDro").child("star"):
star.drag_to(oco("shell"))今天我们写一个嵌套循环,当游戏得分小于100分时,就继续把星星拖动到贝壳上,并打印当前分数,当游戏得分大于或等于100分时,就终止循环,并打印最终游戏得分:#循环执行某个动作
whileint(oco("scoVal").get_text())<100:
forstarinoco("layDragAndDro").child("star"):
star.drag_to(oco("shell"))
rint("当前得分:"+oco("scoVal").get_text())
else:
rint("游戏结束,最终得分:"+oco("scoVal").get_text())
rint("这是第"+str(a)+"次执行脚本")else:下面的代码是不满足循环条件时执行的动作。
4.多次执行脚本并生成多个测试报告
我们还是利用while循环,重复执行3次完整的脚本内容,并依次生成log1.html、log2.html和log3.html。实现思路大致如下:
a=1
whilea<4:
#执行完整的脚本内容
ass#生成报告
fromairtest.ort.ortimortsimle_ort
simle_ort(__file__,logath=True,outut="log"+str(a)+".html")
a=a+1我们可以设置一个变量a,每执行一次脚本,变量a的值就+1,直到a=4,即脚本重复执行了3次以后,循环条件不再满足,程序结束循环。
最终log查看窗打印的部分结果如下:也生成了3分独立的测试报告:
这里有一点需要特别注意下,就是在每一次执行完脚本之后,我们需要把设备恢复到原始状态:
#回到首页并清理应用
keyevent("HOME")
clear_a("com.NetEase")