当前位置: 首页 > news >正文

Aritest+python+Jenkins解放双手iOS/Android自动化

ARITest、Python 和 Jenkins 可以结合在一起创建一个自动化测试解决方案,实现持续集成和持续测试的目标。以下是三者如何协同工作的基本概念:

1. **ARITest**:
   ARITest 是一款功能全面的自动化测试工具,提供 UI 自动化、接口自动化、性能测试等多种测试手段。假设您正在使用 ARITest 进行自动化测试,可以编写或录制生成自动化测试脚本。

2. **Python**:
   Python 在此场景中的角色可能是编写自动化测试脚本,或者与 ARITest 结合使用。ARITest 支持多种编程语言,若其支持 Python,则可通过编写 Python 脚本来操控 ARITest 执行自动化测试任务,或者处理测试过程中的数据和逻辑。

3. **Jenkins**:
   Jenkins 是一个开源的持续集成和持续部署工具,常用于自动化各种软件开发流程,包括构建、测试和部署等。在您的案例中,可以将 ARITest 的自动化测试集成到 Jenkins 工作流中:
   - 创建 Jenkins 任务,配置源代码管理(如 Git),当代码库有新的提交时触发构建。
   - 构建步骤中执行 ARITest 的自动化测试脚本(无论是否为 Python 编写)。这可以通过 Jenkins 插件或直接命令行调用实现。
   - 测试完成后,Jenkins 可以根据测试结果决定是否继续后续的部署或其他操作,比如发送邮件通知、更新测试报告等。

总结来说,ARITest 提供了自动化测试的能力,Python 可能用于增强测试脚本的编写和处理逻辑,而 Jenkins 则负责协调整个自动化流程,确保每一次代码变更都能自动触发测试,并及时反馈测试结果,提升团队的工作效率和产品质量。

操作流程如下:
1.Aritest里面编写自动测试用例,包含测试报告zip压缩,源码已贴
2.脚本放在python中运行,需要注意
auto_setup(__file__, devices=['Android://127.0.0.1:65535/R9HT30CMP7X'],logdir=True) #pycharm中运行
3.脚本运行完接入Jenkins本地路径,定时构建运行
4.查看定时构建的UI测试报告

如何自动化发送测试报告参考

展示Jenkins定时构建结果

展示 自动化发送测试报告参考

代码如下:

# -*- encoding=utf8 -*-
__author__ = "86150"import zipfilefrom airtest.core.api import *
from airtest.report.report import LogToHtml, simple_report
import yagmail#auto_setup(__file__) #airtest中运行auto_setup(__file__, devices=['Android://127.0.0.1:65535/R9HT30CMP7X'],logdir=True) #pycharm中运行# with open('C://360Downloads/phone1.txt', 'r') as file:
#     lines = file.readlines()
#     last_line = lines[-1].strip()
#     i = last_line
#     print(i)
#     a = i[-10:]
#     print(a)def phone_lis():with open("C://360Downloads/phone1.txt",'r')as f:phone_list = []for line in f.readlines():phone_list.append(line.strip()[-10:])return phone_lista = phone_lis()
for i in range(2):  #循环次数,根据文本内容phone_h = a.pop()touch(Template(r"tpl1702347655566.png", record_pos=(0.12, -0.862), resolution=(1080, 2408)))touch(Template(r"tpl1702295125063.png", record_pos=(-0.028, -0.372), resolution=(1080, 2408)))shell(f"input text {phone_h}")touch(Template(r"tpl1702347688845.png", record_pos=(-0.012, 0.017), resolution=(1080, 2408)))sleep(3.0)touch(Template(r"tpl1702450967129.png", record_pos=(-0.168, 0.108), resolution=(1080, 2408)))shell("input text '1234'")#输入验证码##2.点击借款完件sleep(2.0)touch(Template(r"tpl1702443733048.png", record_pos=(0.02, -0.106), resolution=(1080, 2408)))sleep(5.0)touch(Template(r"tpl1702443838057.png", record_pos=(-0.187, -0.11), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702443851819.png", record_pos=(-0.341, 0.741), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702443875269.png", record_pos=(-0.237, 0.737), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702443894716.png", record_pos=(-0.379, 0.739), resolution=(1080, 2408)))sleep(2.0)touch(Template(r"tpl1702443921021.png", record_pos=(-0.005, 0.178), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702444012781.png", record_pos=(0.001, 0.427), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702444030976.png", record_pos=(-0.004, 0.719), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702444110247.png", record_pos=(0.361, 0.723), resolution=(1080, 2408)))#3.准备断言页面确认借款sleep(40.0)snapshot(msg="确认借款额度页面")touch(Template(r"tpl1702444750799.png", record_pos=(-0.004, 0.881), resolution=(1080, 2408)))##4.准备退出了,切换账号sleep(2.0)touch(Template(r"tpl1702441741837.png", record_pos=(0.235, 0.913), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702441753369.png", record_pos=(0.12, -0.817), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702441768025.png", record_pos=(0.008, 0.256), resolution=(1080, 2408)))sleep(1.0)touch(Template(r"tpl1702441776831.png", record_pos=(-0.228, 0.149), resolution=(1080, 2408)))sleep(1.0)keyevent("HOME")sleep(1.0)##执行完毕,准保下一轮#1.用脚本导出运行报告
h1 = LogToHtml(script_root=r'C:\Users\86150\Desktop\untitled6.air', log_root=r"C:\Users\86150\Desktop\untitled6.air\log",export_dir=r"C:\360Downloads\test\report02", logfile=r'C:\Users\86150\Desktop\untitled6.air\log\log.txt', lang='zh',plugins=None)
h1.report()#2.将导出的报告文件压缩成zip包
def zipDir(dirpath,outFullName):# dirpath为需要导出的文件夹路径# outFul1Name为导出的zip压缩包的路径 (含压缩包名称)zip = zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED)for path,dirnames,filenams in os.walk(dirpath):# 去掉目标根路径,只对目标文件夹下边的文件及文件夹进行压缩fpath = path.replace(dirpath,'')for filename in filenams:zip.write(os.path.join(path, filename), os.path.join(fpath, filename))zip.close()
zipDir(r"C:\360Downloads\test\report02\untitled6.log", r"C:\360Downloads\test\untitled6.log.zip")#3.连接邮箱服务器
yag = yagmail.SMTP(user="my@qq.com", password="cqfoejatumircahi", host='smtp.qq.com')
#邮箱正文,自定义
contents = ['Airtest测试报告','脚本: nolog_test.air','作者:Cas']
#发送带附件的邮件,最后1个参数为附件地址
# 接收邮件的邮箱和附件地址可以为列表,即发送给多个邮箱,发送多个附件
yag.send('tomyis@meprestamo.mx','邮件主题',contents,[r"C:\360Downloads\test\untitled6.log.zip"])#if __name__ == '__main__':

代码中本地创建日志路径如下

相关文章:

Aritest+python+Jenkins解放双手iOS/Android自动化

ARITest、Python 和 Jenkins 可以结合在一起创建一个自动化测试解决方案,实现持续集成和持续测试的目标。以下是三者如何协同工作的基本概念: 1. **ARITest**: ARITest 是一款功能全面的自动化测试工具,提供 UI 自动化、接口自…...

Problem #7 [Medium]

This problem was asked by Facebook. Given the mapping a = 1, b = 2, … z = 26, and an encoded message, count the number of ways it can be decoded. For example, the message ‘111’ would give 3, since it could be decoded as ‘aaa’, ‘ka’, and ‘ak’. Y…...

MySQ数据库: MySQL数据库的安装配置 ,图文步骤详细,一篇即可完成安装完成! MySQL数据库如何与客户端连接

LiuJinTao: 2024年4月14日 文章目录 MySQL的安装配置1. 下载2. 安装 三、 MySQL 启动与停止1. 第一种 方式:2. 第二种方式: 四、MySQL 客户端连接2. 方式二: MySQL的安装配置 1. 下载 官方下载网址:https://www.mysq…...

vue3+vant自动导入+pina+vite+js+pnpm搭建项目框架

vue3vant自动导入pinavitejspnpm搭建项目框架 文章目录 vue3vant自动导入pinavitejspnpm搭建项目框架1. 安装pnpm(如果还没有安装):2. 创建项目目录并进入该目录:3. 初始化项目:4. 安装Vite作为构建工具:5.…...

使用 Axios 处理 AxiosError 的三种常见方法

在使用 Axios 时处理 AxiosError 有几种常见的方法: 使用 try-catch 语句捕获异常: try {const response await axios.get(/api/data);// 处理响应数据 } catch (error) {if (error.response) {// 请求成功但状态码不在 2xx 范围console.log(error.response.data);console.l…...

linux上安装Tomcat

安装Tomcat 安装JDK https://www.oracle.com/java/technologies/downloads/#license-lightbox mkdir -p /usr/java tar xf jdk-11.0.22_linux-x64_bin.tar.gz ln -sv /usr/java/jdk /usr/java/jdk-11.0.22配置环境变量&#xff1a; cat > /etc/profile.d/java.sh <&…...

Ubuntu20.04安装ROS过程记录以及常见报错处理

官网安装步骤如下&#xff1a; http://wiki.ros.org/cn/noetic/Installation/Ubuntu#A.2BXwBZy1uJiMU- 第一个&#xff1a;添加ROS软件源 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-la…...

PaddleOCR 图片日期识别

目录 一 . 获取图片信息种对应坐标区域日期信息 &#xff08;类型为1&#xff1a;http链接 类型为 2本地图片路径&#xff09; 二 . ocr图片识别日期信息获取&#xff0c;调用获取图片区域相应位置方法 三 . 如有所需获取rtsp流回放格式 四 . 完整代码如下 &#xff08…...

HTML5学习记录

简介 超文本标记语言&#xff08;HyperText Markup Language&#xff0c;简称HTML&#xff09;&#xff0c;是一种用于创建网页的标准标记语言。 编辑器 下载传送门https://code.visualstudio.com/ 下载编辑器插件 标题 标题通过 <h1> - <h6> 标签进行定义。 …...

提升法律文书起草效率:AlphaGPT 助力律师快速生成诉讼和仲裁文件

法律文书起草对于法律专业人士而言是一项基础而关键的任务。无论是民事、刑事还是行政诉讼&#xff0c;以及仲裁案件&#xff0c;精确的法律文书撰写对于案件的成功至关重要。然而&#xff0c;这一过程往往既耗时又复杂&#xff0c;尤其是在处理复杂的案情和面对当事人难以理解…...

大数据之 Hive 快速搭建的详细步骤

Hive hive 搭建三种模式: 内嵌模式本地模式远程模式内嵌模式 Hadoop 和 Hive 整合 修改 hadoop/etc/下的 core-site.xml: <property><name>hadoop.proxyuser.root.hosts</name><value>*</value> </property> <property><nam…...

从入门到高级的99个python知识点

大家好&#xff0c;想掌握Python编程语言&#xff0c;从零基础的小白晋升为大神&#xff1f;没问题&#xff01;接下来我们将以轻松有趣的方式&#xff0c;逐一解锁Python学习路上的99个关键知识点。每一步都将结合实际应用场景、函数功能解析及简洁代码演示&#xff0c;带你深…...

设计模式之备忘录模式(上)

备忘录模式 1&#xff09;概述 1.定义 在不破坏封装的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;可以在以后将对象恢复到原先保存的状态。 2.作用 备忘录模式提供了一种状态恢复的实现机制&#xff0c;使得用户可以方便…...

算法中二分搜索详解

文章目录 在有序数组中找num是否存在实现思路实现代码(里面运用了对数器)在有序数组中找>num的最左位置实现思路代码实现 在有序数组中找<num的最右位置实现思路实现代码 二分搜索不一定发生在有序数组上(比如寻找峰值问题)题目描述实现思路实现代码 在有序数组中找num是…...

关于无线充电项目总结IP6826

1、电路 1.1 选用芯片IP6826英集芯 支持PD3.0 5-15W 1.2 推荐电路 讲解这个是官方推荐图 注意以下几点&#xff1a; NTC是100K的别买错了 L就是线圈 我这选用的A11 6.3 uH 淘宝买的 需要陪400nf NPO或CBB 还可以10uh配250nf&#xff08;这个我没试过&#xff09; 如果led2闪烁…...

[CSS]样式属性+元素设置

哎呀&#xff0c;好多东西&#xff0c;根本记不住&#xff0c;更多的还是边用边记吧&#xff0c;这里的代码就当使用范例&#xff0c;但其实如果可以让gpt应该会更好&#xff0c;哎学吧&#xff0c;反正记得住当然更好 文本 属性名描述word-break单词换行。取值如下&#xff1…...

优雅关闭jar程序shell 脚本

参考竽道Linux部署 #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/work/projects/yudao-server # 服务名称。同时约定部署服务的 jar 包名字也为它。 SERVER_NAMEyudao-server # 环境 PROFILES_ACTIVEdev# heapError 存放路径 HEAP_ERROR_PATH$BASE_PATH/he…...

基于51单片机多功能洗衣机控制(强洗弱洗漂洗)设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机多功能洗衣机控制(强洗弱洗漂洗)设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 多功能洗衣机控制-强洗弱洗漂洗 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真设计4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单资料下载链接&#xf…...

CVP(ChatGPT、Vector Database和Prompt)

CVP实际上指的是ChatGPT、Vector Database和Prompt的结合&#xff0c;这是一种新型的技术栈&#xff0c;用于构建智能应用。 首先&#xff0c;我们来看这三个组成部分&#xff1a; ChatGPT&#xff1a;这是一个强大的语言模型&#xff0c;它能够理解并生成自然语言文本。Chat…...

c语言-----数组知识汇总

前言 本文为我学习数组知识点之后&#xff0c;对c语言的数组部分进行的知识点汇总。 简单数组介绍 简单来说&#xff0c;数组就是一个数据组&#xff0c;像一个箱子&#xff0c;里面放有多个数据。 [1,2,3,4,5] 数组的定义 基础定义 语法&#xff1a; 数据类型 数组名[数组…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...