教你实现一个非常有趣的自动化脚本“循环执行”的实例

版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
此文章来源于项目官方公众号:“AirtestProject”

前言

今天我们来学习1个非常有趣的 poco 实例。在这个示例中,我们将学习到以下小知识:

  • 1.如何过滤非报错的log信息,让你的log窗口不再密密麻麻
  • 2.连接设备、初始化poco、打开应用这几个脚本顺序应该怎么放
  • 3.循环执行1个测试动作,直到满足某个条件为止
  • 4.多次执行同一脚本,并且每一次执行都生成1份测试报告

下文的例子中用到的demo可以在我们官网上下载到(链接:https://poco.readthedocs.io/en/latest/source/doc/poco-example/index.html)。

1.过滤非报错的log信息

默认情况下,在IDE执行测试脚本的时候,log查看窗口会打印出所有等级的日志信息,包含 [DEBUG][INFO][WARNING][ERROR] 等等。

image

如果你不想这些非报错的日志信息过多占据log查看窗的位置,并且干扰到你提取有效的报错日志;你可以在脚本代码开头加上 对日志信息等级的设定

__author__ = "Airtest"

import logging
logger = logging.getLogger("airtest")
logger.setLevel(logging.ERROR)

logging 模块是 Python 内置的标准模块,主要用于输出运行日志。它还可以设置输出日志的等级、日志保存路径、日志文件回滚等。

在这里我们主要用到设置输出日志的等级这个方法,仅输出日志等级为[DEBUG]的日志信息:

image

可以看到,把输出日志信息的级别改成 [ERROR] 以后,整个脚本运行过程中只有少量初始化信息输出,更方便查看报错信息。

2.如何安排连接设备、初始化poco和打开应用的脚本顺序

很多新手在使用 poco 的时候,都容易把连接设备、初始化 poco 和打开应用的脚本顺序搞乱,导致出现一大堆奇妙的报错。

比如大家最常见的:“远程主机强迫关闭了一个现有的连接”、“socket connection broken”等等。

最正确的顺序是:先连接设备(一般在 auto_setup 接口里面连接)–> 再打开应用(一般用 start_app 接口)–> 等应用开启完毕,最后才初始化 poco

# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *

# 连接设备
auto_setup(__file__,logdir=True,devices=["Android://127.0.0.1:5037/emulator-5554?cap_method=JAVACAP"])

#启动应用
start_app("com.NetEase")
sleep(6.0)

# 初始化poco
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()

poco("btn_start").click()

所以下次写 poco 脚本的时候,千万记住要检查下这几条代码的顺序,避免产生不必要的报错。

3.多次执行某个测试动作

python给我们提供了多个循环方法,比如while循环、for循环等,还有个特别一点的循环叫嵌套循环,可以让我们在while循环里面使用for循环。

在我们之前的推文“1篇文章带你了解poco的所有基本功能”中,我们有简单介绍如何遍历元素,那时候用的就是for循环:

for star in poco("playDragAndDrop").child("star"):
    star.drag_to(poco("shell"))

今天我们写一个嵌套循环,当游戏得分小于100分时,就继续把星星拖动到贝壳上,并打印当前分数,当游戏得分大于或等于100分时,就终止循环,并打印最终游戏得分:

image

 # 循环执行某个动作
    while int(poco("scoreVal").get_text()) < 100:
        for star in poco("playDragAndDrop").child("star"):
            star.drag_to(poco("shell"))
            print("当前得分:"+poco("scoreVal").get_text())
    else:
        print("游戏结束,最终得分:"+poco("scoreVal").get_text())
        print("这是第"+str(a)+"次执行脚本")

else: 下面的代码是不满足循环条件时执行的动作。

4.多次执行脚本并生成多个测试报告

我们还是利用 while循环,重复执行3次完整的脚本内容,并依次生成 log1.htmllog2.htmllog3.html。实现思路大致如下:

a = 1
while a < 4:
    # 执行完整的脚本内容
    pass
    
    # 生成报告
    from airtest.report.report import simple_report
    simple_report(__file__,logpath=True,output="log"+str(a)+".html")
    a = a + 1

我们可以设置一个变量 a ,每执行一次脚本,变量 a 的值就 +1,直到 a=4,即脚本重复执行了3次以后,循环条件不再满足,程序结束循环。

最终log查看窗打印的部分结果如下:

image

也生成了3分独立的测试报告:

image

image

这里有一点需要特别注意下,就是在每一次执行完脚本之后,我们需要把设备恢复到原始状态:

# 回到首页并清理应用
keyevent("HOME")
clear_app("com.NetEase")

5.小结

如果想获取今天示例的完整代码,童鞋们可以在直接在AirtestProject公众号回复关键词“循环”。

另外本次示例中没有考虑到出现报错,程序终止执行的情况,实际上我们也应该把这部分的内容考虑进去。

之前我们也教过大家很多捕捉报错让程序继续执行的方法,可以使用 try catchtry excepttry finally 等等。大家可以动手试一试,把报错这部分的内容也添加到你的测试脚本中去~


Airtest官网:http://airtest.netease.com/
Airtest教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以帮助您编写一个自动化安装Redis集群的脚本:#!/bin/bash# 安装Redis集群 echo "开始安装Redis集群..." for i in {1..3} do sudo apt-get install redis-server done# 配置Redis集群 echo "正在配置Redis集群..." for i in {1..3} do sudo redis-cli --cluster create 192.168.1.${i}:6379 192.168.1.${i}:6380 192.168.1.${i}:6381 doneecho "Redis集群安装完成!" ### 回答2: 自动化安装Redis集群脚本是一种方便快捷地部署Redis集群的方法。下面是一个简单的示例脚本: ```bash #!/bin/bash # 检查Redis安装包是否存在 if [ ! -f redis-5.0.7.tar.gz ]; then echo "Redis安装包不存在,请先下载Redis安装包!" exit 1 fi # 解压Redis安装包 tar -zxvf redis-5.0.7.tar.gz cd redis-5.0.7 # 编译安装Redis make make install # 创建Redis配置文件 mkdir -p /etc/redis cp redis.conf /etc/redis/redis.conf # 修改Redis配置文件 sed -i 's/daemonize no/daemonize yes/g' /etc/redis/redis.conf sed -i 's/# cluster-enabled yes/cluster-enabled yes/g' /etc/redis/redis.conf sed -i 's/# cluster-config-file nodes.conf/cluster-config-file nodes.conf/g' /etc/redis/redis.conf sed -i 's/# cluster-node-timeout 15000/cluster-node-timeout 15000/g' /etc/redis/redis.conf # 启动Redis节点 redis-server /etc/redis/redis.conf # 添加节点到集群 redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 # 检查集群状态 redis-cli --cluster check 127.0.0.1:6379 # 输出集群信息 redis-cli --cluster nodes 127.0.0.1:6379 ``` 使用上述脚本,你需要将Redis安装包放置在与脚本相同的目录下,并命名为`redis-5.0.7.tar.gz`。脚本首先会解压安装包,然后编译并安装Redis。接下来,脚本会创建和修改Redis配置文件,启动Redis节点,并将节点添加到集群中。最后,脚本会检查集群状态,并输出集群信息。 请注意,上述脚本仅适用于演示和学习目的。在实际环境中,你可能需要根据具体需求进行适当的修改和优化。 ### 回答3: 自动化安装Redis集群脚本可以通过以下步骤完成: Step 1: 首先,确保目标服务器已安装好适当的操作系统(如CentOS、Ubuntu等)和必要的软件依赖(如wget、tar等)。 Step 2: 在脚本开始之前,需定义一些相关的变量,如Redis的版本、安装路径、端口号等。这些变量可以根据实际需求进行修改。 Step 3: 使用wget命令下载Redis的tar包,并将其解压到指定安装路径下。 Step 4: 在脚本中创建Redis配置文件redis.conf,并根据需要配置集群的节点数量,指定端口号、主从关系等。在创建配置文件期间,可以根据实际需求修改配置。 Step 5: 通过脚本循环创建Redis实例,每个实例包含一个主节点和相应数量的从节点。主节点的配置信息存储在redis.conf中,从节点的配置信息通过slaveof命令动态配置。 Step 6: 在脚本的最后,启动Redis集群的所有实例,并检查集群的状态是否正常。 通过上述步骤,您可以编写一个自动化安装Redis集群的脚本。将脚本保存为.sh文件,并在需要安装Redis集群的服务器上执行即可实现自动化安装过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值