游戏测试 Jenkins+Airtest 实现定时执行自动化脚本

孤心修剑 · 2019年10月16日 · 最后由 特尔斯特 回复于 2021年03月30日 · 7625 次阅读

前言

通过 Jenkins 实现自动化脚本的持续集成。
该文以版署服的登陆检查为例子。

一、环境准备

1.安装 airtest 所需要的 python 库、python 环境、adb 等 airtest 运行所需的环境。
具体参考官方资料:使用本地 python 环境运行脚本

安装 OK!

2.安装 jenkins
不会的百度下~~安装 OK!

二、Jenkins 配置

1.jenkins 基础配置
百度百度百度

2.安装 jenkins 插件:HTML Publisher

不会的百度一下,安装 OK!
注意测试报告的 CSS 样式问题。
处理方法:
在 jenkins 系统管理中输入以下脚本运行:

ystem.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

参考链接:传送门

3.准备 airtest 自动化脚本
直接图像识别的 air 后缀脚本:Login_check.air

4.配置构建的定时调度任务

  • 新建构建任务

  • 配置构建步骤

  • 配置 shell 执行的 RunGameLogInCheck.py 脚本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2019/7/24 10:02
# @Author  : 孤心修剑
# @Site    : 
# @File    : RunGameLogInCheck.py
# @Software: PyCharm

import subprocess
from airtest.core.api import *
import argparse

parser = argparse.ArgumentParser()

# parser.add_argument('-d', "--Device_Code", help="请输入设备码")
parser.add_argument('-r', "--Recording", help="需要录像请输入True")
args = parser.parse_args()

#自动化脚本存放的路径
scriptPath = r"/opt/svnClientPro/project/AirtestCase/Case_Common/Login_check.air"
# 报告保存存放的路径
reportPath = r"/var/lib/jenkins/workspace/版署包每日检查/log"

# 固定6acefc26这台手机
cmd_run = r"airtest run "+ scriptPath + r" --device Android:///6acefc26" + r" --log "+reportPath
cmd_report = r"airtest report  " + scriptPath + "  --log_root " + reportPath +\
           "  --export /var/lib/jenkins/workspace/版署包每日检查/HTML"
if args.Recording == "True":
    cmd_run = cmd_run + " --recording"

ret = subprocess.call(cmd_run, shell=True)
print("ret:%s" % str(ret))

report = subprocess.call(cmd_report,shell=True)
print("report:%s" % str(report))
  • 配置构建后的报告

关于 HTML Publisher 的配置请百度。
注意路径,我的自己创建了 HTML 文件夹,而且必须放在 Jenkins 的工作空间内。

  • 配置构建后的邮件发送
    百度一下进行配置即可

  • 配置定时执行自动化脚本

    百度一下更多的定时时间格式即可。

5.看一下实现后的效果
通过添加的报告查看保存的 airtest 报告

通过控制台输出查看 airtest 的执行日志

三、扩展 平台

直接使用官方的多设备并行运行 Airtest 测试项目multi-device-runner,需稍做修改。
+Jenkins+SVN+linux 服务器 +atx/stf 可以实现比较简单的自动化持续集成。

共收到 6 条回复 时间 点赞

给力~

学习了。 刚好前阵子写了一个差不多的 每小时定时检查版署包服务器情况。。。

7楼 已删除
匿名 #3 · 2020年09月28日

我尝试把 multi-device-runner 使用 Jenkins 来定时跑,报"airtest"不是内部或外包命令,不知是否遇到过该问题 (已解决)

你好,我 Jenkins 执行 airtest 脚本后,截图文件都不见了,导致报告里展示的图片都是 image not fund,请问这种是怎么回事,该怎么解决呢?

张燕子 回复

路径不对

airtest 的脚本只是检查登录吗?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册