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配置环境变量: cat > /etc/profile.d/java.sh <&…...
Ubuntu20.04安装ROS过程记录以及常见报错处理
官网安装步骤如下: http://wiki.ros.org/cn/noetic/Installation/Ubuntu#A.2BXwBZy1uJiMU- 第一个:添加ROS软件源 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-la…...
PaddleOCR 图片日期识别
目录 一 . 获取图片信息种对应坐标区域日期信息 (类型为1:http链接 类型为 2本地图片路径) 二 . ocr图片识别日期信息获取,调用获取图片区域相应位置方法 三 . 如有所需获取rtsp流回放格式 四 . 完整代码如下 (…...
HTML5学习记录
简介 超文本标记语言(HyperText Markup Language,简称HTML),是一种用于创建网页的标准标记语言。 编辑器 下载传送门https://code.visualstudio.com/ 下载编辑器插件 标题 标题通过 <h1> - <h6> 标签进行定义。 …...
提升法律文书起草效率:AlphaGPT 助力律师快速生成诉讼和仲裁文件
法律文书起草对于法律专业人士而言是一项基础而关键的任务。无论是民事、刑事还是行政诉讼,以及仲裁案件,精确的法律文书撰写对于案件的成功至关重要。然而,这一过程往往既耗时又复杂,尤其是在处理复杂的案情和面对当事人难以理解…...
大数据之 Hive 快速搭建的详细步骤
Hive hive 搭建三种模式: 内嵌模式本地模式远程模式内嵌模式 Hadoop 和 Hive 整合 修改 hadoop/etc/下的 core-site.xml: <property><name>hadoop.proxyuser.root.hosts</name><value>*</value> </property> <property><nam…...
从入门到高级的99个python知识点
大家好,想掌握Python编程语言,从零基础的小白晋升为大神?没问题!接下来我们将以轻松有趣的方式,逐一解锁Python学习路上的99个关键知识点。每一步都将结合实际应用场景、函数功能解析及简洁代码演示,带你深…...
设计模式之备忘录模式(上)
备忘录模式 1)概述 1.定义 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,可以在以后将对象恢复到原先保存的状态。 2.作用 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便…...
算法中二分搜索详解
文章目录 在有序数组中找num是否存在实现思路实现代码(里面运用了对数器)在有序数组中找>num的最左位置实现思路代码实现 在有序数组中找<num的最右位置实现思路实现代码 二分搜索不一定发生在有序数组上(比如寻找峰值问题)题目描述实现思路实现代码 在有序数组中找num是…...
关于无线充电项目总结IP6826
1、电路 1.1 选用芯片IP6826英集芯 支持PD3.0 5-15W 1.2 推荐电路 讲解这个是官方推荐图 注意以下几点: NTC是100K的别买错了 L就是线圈 我这选用的A11 6.3 uH 淘宝买的 需要陪400nf NPO或CBB 还可以10uh配250nf(这个我没试过) 如果led2闪烁…...
[CSS]样式属性+元素设置
哎呀,好多东西,根本记不住,更多的还是边用边记吧,这里的代码就当使用范例,但其实如果可以让gpt应该会更好,哎学吧,反正记得住当然更好 文本 属性名描述word-break单词换行。取值如下࿱…...
优雅关闭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仿真程序设计报告原理图讲解视频) 多功能洗衣机控制-强洗弱洗漂洗 1. 主要功能:2. 讲解视频:3. 仿真设计4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单资料下载链接…...
CVP(ChatGPT、Vector Database和Prompt)
CVP实际上指的是ChatGPT、Vector Database和Prompt的结合,这是一种新型的技术栈,用于构建智能应用。 首先,我们来看这三个组成部分: ChatGPT:这是一个强大的语言模型,它能够理解并生成自然语言文本。Chat…...
c语言-----数组知识汇总
前言 本文为我学习数组知识点之后,对c语言的数组部分进行的知识点汇总。 简单数组介绍 简单来说,数组就是一个数据组,像一个箱子,里面放有多个数据。 [1,2,3,4,5] 数组的定义 基础定义 语法: 数据类型 数组名[数组…...
【游戏开发之热更新技术】
游戏开发之热更新技术 热更新技术是指在不重新发布和安装应用的情况下,对已部署的应用程序进行更新和修补的技术。这种技术在现代软件开发中变得越来越重要,因为它能够为用户提供更加及时的服务和更好的体验。以下是一篇关于热更新技术的文章࿰…...
小红的白色字符串
题目描述 小红拿到了一个字符串,她准备将一些字母变成白色,变成白色的字母看上去就和空格一样,这样字符串就变成了一些单词。 现在小红希望,每个单词都满足以下两种情况中的一种: 1.开头第一个大写,其余为…...
Python+Django+Html网页版人脸识别考勤打卡系统
程序示例精选 PythonDjangoHtml人脸识别考勤打卡系统 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonDjangoHtml网页版人脸识别考勤打卡系统》编写代码,代码整洁…...
第1章、react基础知识;
一、react学习前期准备; 1、基本概念; 前期的知识准备: 1.javascript、html、css; 2.构建工具:Webpack:https://yunp.top/init/p/v/1 3.安装node:npm:https://yunp.top/init/p/v/1 …...
物联网会用到哪些数据开发
物联网(IoT)涉及大量的设备和传感器,产生的数据种类繁多,因此在物联网领域进行数据开发时,可能涉及以下几个方面: 数据采集与存储: 设备数据采集:从各种传感器和设备中采集数据&…...
[Linux]一篇文章带你搞定软硬连接
阅读导览: 先在windows中先见见软硬连接从名字、inode等方面分析软硬连接如何实现软硬连接硬链接注意事项软硬链接都用来干什么如何在windows中实现硬链接 文章目录 概念简述文件系统windows下的快捷方式--软硬链接的直观体现角度1:文件名角度2ÿ…...
AI常见关键术语
哈喽,大家好,我是小码哥,人工智能技术的快速发展带来了许多专业术语,这些词汇对于理解AI的工作原理和应用至关重要。以下是一些关键的AI术语,以及它们的专业解释和通俗总结。 一、核心概念 人工智能 (AI) 专业解释&am…...
DataX案例,MongoDB数据导入HDFS与MySQL
【尚硅谷】Alibaba开源数据同步工具DataX技术教程_哔哩哔哩_bilibili 目录 1、MongoDB 1.1、MongoDB介绍 1.2、MongoDB基本概念解析 1.3、MongoDB中的数据存储结构 1.4、MongoDB启动服务 1.5、MongoDB小案例 2、DataX导入导出案例 2.1、读取MongoDB的数据导入到HDFS 2…...
HarmonyOS鸿蒙端云一体化开发--适合小白体制
端云一体化 什么是“端”,什么是“云”? 答:“端“:手机APP端 “云”:后端服务端 什么是端云一体化? 端云一体化开发支持开发者在 DevEco Studio 内使用一种语言同时完成 HarmonyOS 应用的端侧与云侧开发。 …...
Quanto: PyTorch 量化工具包
量化技术通过用低精度数据类型 (如 8 位整型 (int8)) 来表示深度学习模型的权重和激活,以减少传统深度学习模型使用 32 位浮点 (float32) 表示权重和激活所带来的计算和内存开销。 减少位宽意味着模型的内存占用更低,这对在消费设备上部署大语言模型至关…...
网页设计页面尺寸/seo岗位有哪些
Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲作者丨酷酷的哀殿来源丨酷酷的哀殿的博客https://ai-chan.top/2020/09/27/iOS-Snapshots/你是否了解过iOS 是如何获取夜间模式启动图缓存路径&…...
web扁平化风格网站/青岛seo整站优化
由于公司的业务不断拓展,生产环境的 APK 大小也从我最初进入公司时的 70M 变为了160MB ,在分析了 APK 结构目录之后,常规的压缩方案已经收效甚微了,动态加载第三方的 SO 文件是下一个优化的重点。SO 文件本质上就是一种可动态加载…...
wordpress添加产品图/seo自动推广工具
前言我工作中的技术栈主要是 React TypeScript,这篇文章我想总结一下如何在项目中运用 React 的一些技巧去进行性能优化,或者更好的代码组织。性能优化的重要性不用多说,谷歌发布的很多调研精确的展示了性能对于网站留存率的影响,…...
网络用户提要求找人帮忙做的网站/百度搜索官网
📢前言🌲原题样例:旋转字符串🌻C#方法:判断子串🌻Java 方法:判断子串💬总结📢前言 🚀 算法题 🚀 🌲 每天打卡一道算法题,…...
性用品微商做的最好的网站/竞价托管如何托管
抽象工厂模式 抽象工厂模式其实是通过工厂模式实现的,也可以说是工厂模式的扩展。那什么是抽象工厂模式呢?好,先来看看这样一个问题:假设我们玩一个横版过关的游戏,当前关卡有好几类怪物(如:精灵类&#x…...
沧州有做网站的吗/有什么平台可以推广
问题:生成时提示 gl.h中出现一堆错误,如 error C2144: 语法错误 : “void”的前面应有“;” error C2182: “APIENTRY” : 非法使用“void”类型 error C2086: “int APIENTRY” : 重定义 error C2146: 语法错误 : 缺少“;”(在标识符“glClearStencil”…...