Jenkins+Robot 接口自动化测试
目录
前言:
设计目标
项目说明
目录结构
配置 jenkins
1.安装插件
2.配置项目
前言:
Jenkins+Robot是一种常见的接口自动化测试方案,可以实现自动化的接口测试和持续集成。Jenkins是一个流行的持续集成工具,而Robot Framework是一个开源的自动化测试框架,专注于易用性和可扩展性。
设计目标
- 每次通过手动回归接口测试用例比较麻烦,需要能比较便捷的自动回归接口减轻工作量
- 同时因人力不够能力有限,自己单独开发工具比较困难,需要简单易上手
- 每次在自动化跑完以后希望能快速的看到整体结果,以及有较好的展示
项目说明
目前的项目结构是采用Robot+Jenkins+Git,通过 Python 进行拓展。
- 项目通过 pymysql 进行数据库操作
def db_query(self,db_name,sql,num=1,charset="utf8"): """查询数据库 num若为0,则获取所有结果 """ conn= pymysql.connect( host=self.config.cfg_read("mysql","host"), port=int(self.config.cfg_read("mysql","port")), user=self.config.cfg_read("mysql","user"), passwd=self.config.cfg_read("mysql","passwd"), db =db_name, charset=charset ) cur = conn.cursor() try: cur.execute(sql) if num==0: res=cur.fetchall() return res else: res=cur.fetchmany(num) return res # except MySQLdb.Error,e: # print "Mysql Error %d: %s" % (e.args[0], e.args[1]) except Exception,e: print e finally: cur.close() conn.close() - 同时用 json schema 进行 json 的校验大概代码如下
def json_schema_validation(self,resp,schemaPath): """验证json与schema是否一致 :resp:json返回串 :schemaPath:schema文件路径 """ try: schemaPath=os.path.abspath(schemaPath) if not os.path.exists(schemaPath): raise IOError("schema file path is not exists!") schema=open(schemaPath).read() print jsonschema.validate(resp,json.loads(schema)) return jsonschema.Draft3Validator(json.loads(schema)).is_valid(resp) except jsonschema.ValidationError as e: print e.message return False except jsonschema.SchemaError as e: print e.message return False - 使用了 python 的 requests 模块进行请求
- 使用自定义的一些解析方法去解析 json
- 因为 robot 产生的结果 html 结果不够直观,所以自己根据产生的结果 xml 文件解析生成统计文件发送给部门。
目录结构
- API 存放项目的接口定义文件
- Test 存放项目的接口测试用例
- Flow 存放项目的场景测试用例
- Schema 存放项目的 json schema 模板文件
- Tools 存放项目用到的资源文件
- apiUtil 存放与 api 请求相关的关键字
- assertUtil 存放与断言相关的关键字
- 包括解析 json 的关键字
- 同时还有对比数据库结果与 json 指定值的对比,支持多个对比
- 支持正则匹配 json
- dbUtil 存放与数据库相关的关键字
- Files 存放调用接口需要用到的文件
- Report 存放测试产生的报告
配置 jenkins
每次手动执行 robot 比较麻烦,利用 jenkins 每次从 git 上拉取最新的测试用例,保证项目的持续集成以及自动回归
1.安装插件
- 点击系统管理->插件管理
- 点击【可选插件】,在过滤器中输入 robot 可以进行搜索
- 安装插件
2.配置项目
- 增加新自由项目
- 添加源码管理,因为我们仓库是 git,所以选择 git
- 可以设置构建触发器,比如可以设置每天跑一次
0 0 * * * - 在项目中选择 execute window batch command 填入运行的命令,如用 pybot.bat -I [tagname] [用例项目路径]
- 增加构建后步骤,加入 Publish Robot Framework test results
- 设置测试通过目标
- 通过 ExtendedEmailPublisher 插件增加邮件模版
- 构建就可以看到结果了
![]()
作为一位过来人也是希望大家少走一些弯路
在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。
(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)
相信能使你更好的进步!
点击下方小卡片

相关文章:
Jenkins+Robot 接口自动化测试
目录 前言: 设计目标 项目说明 目录结构 配置 jenkins 1.安装插件 2.配置项目 前言: JenkinsRobot是一种常见的接口自动化测试方案,可以实现自动化的接口测试和持续集成。Jenkins是一个流行的持续集成工具,而Robot Framew…...
【Visual Studio Code】---自定义键盘快捷键设置
概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径,学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、进入键盘快捷键设置 1、进入键盘快捷键设置方法1 使用快捷键进入键盘快捷键设置先按 Ctrl K再…...
FastEdit ⚡:在10秒内编辑大型语言模型
概述: 这个仓库旨在通过一个单一的命令,有效地将新鲜且定制化的知识注入到大型语言模型中,以辅助开发人员的工作。 支持的模型:○ GPT-J (6B)○ LLaMA (7B/13B)○ BLOOM (7.1B)○ Falcon (7B)○ Baichuan (7B/13B)○ InternLM (7…...
SpringBoot + Docker 实现一次构建到处运行
一、容器化部署的好处 Docker 作为一种新兴的虚拟化方式,它可以更高效的利用系统资源,不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行宿主内…...
Spring-Cloud-Gateway如何自定义断言工厂?
遇到这么一个面试题:如何在网关做配置,实现只有在早晨9点到下午18点之间接口才允许访问,其他时间访问都是404。 我们知道网关的一个重要的作用就是路由转发,路由表的配置大概是这个样子: spring:cloud:gateway:routes:- id: user…...
Android平台如何高效率实现GB28181对接?
技术背景 GB28181协议是一种用于设备状态信息报送的协议,可以在不同设备之间进行通信和数据传输。 在安卓系统上实现GB/T 28181非常必要,GB28181协议实现分两部分,一部分是信令,另外一部分就是媒体数据的编码。 信令主要包括S…...
vue2 实现后台管理系统左侧菜单联动实现 tab根据路由切换联动内容,并支持移动端框架
效果图: pc端 移动端 由于代码比较多,我这里就不一一介绍了,可以去我的git上把项目拉下来 git地址https://gitee.com/Flechazo7/htglck.git 后台我是用node写的有需要的可以评论联系...
一本通1910:【00NOIP普及组】计算器的改良题解
今天是编程集训的第二天,也是我来到CSDN整整1年。感谢所有阅读过我的文章的人,谢谢。 今天的比赛难度略低于昨天,但这道题也卡了我好久。 进入正题 题目: 题目描述: NCL是一家专门从事计算器改良与升级的实验室&a…...
golang网络编程学习-1rpc
网络编程主要的内容是: 1.TCP网络编程 2.http服务 3.rpc服务 4.websocket服务 一、rpc RPC 框架----- 远程过程调用协议RPC(Remote Procedure Call Protocol)-----允许像调用本地服务一样调用远程服务。 RPC是指远程过程调用,也就是说两台服…...
【MQTT】Esp32数据上传采集:最新mqtt插件(支持掉线、真机调试错误等问题)
前言 这是我在Dcloud发布的插件-最完整Mqtt示例代码(解决掉线、真机调试错误等问题),经过整改优化和替换Mqtt的js文件使一些市场上出现的问题得以解决,至于跨端出问题,可能原因有很多,例如,合法…...
基于PyQt5的UI界面开发——对基本控件的介绍
基本控件介绍 在PyQt中,控件是用户界面上的可见元素。控件可以包括按钮、标签、文本框、进度条等。每个控件都有自己的属性和方法,可以通过编程方式进行调整和操作。 以下是一些常用的PyQt控件: QLabel(标签)&#…...
flink 报错:Caused by: java.lang.RuntimeException: Assigned key must not be null!
问题描述 不同情况下需要找对应的解决方法,这里介绍的解决方法不能拓展到别的场景。 场景描述: flink job 的开发过程中遇到这样的需求,需要先 map 处理,然后把返回的 DataStream 作为输入,流入别的 map 中。这里我们遇…...
AN OVERVIEW OF LANGUAGE MODELS RECENT DEVELOPMENTS AND OUTLOOK
LLM系列相关文章,针对《AN OVERVIEW OF LANGUAGE MODELS: RECENT DEVELOPMENTS AND OUTLOOK》的翻译。 语言模型综述:近年来的发展与展望 摘要1 引言2 语言模型的类型2.1 结构化LM2.2 双向LM2.3 置换LM 3 语言单元3.1 字符3.2 单词和子单词3.2.1 基于统…...
ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升
专题一 空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 专题二 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化:地图符号与注…...
fastapi初使用,构建自己的api
文章目录 1、安装2、api实现2.1、 app.get("/1")2.2、app.get("/{a}")2.3、app.get("/{a}{b}")2.4、函数和api分离 3、运行 原文链接:https://wangguo.site/posts/d98bb3c9.html fastapi 是一个基于 Python 的 API 构建框架ÿ…...
Html基础知识学习——圣杯布局、margin负值、等高布局(十七)
文章目录 圣杯布局margin负值等高布局 圣杯布局 两边页面固定中间页面宽度随着浏览器大小自适应 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…...
从一长串字符串中找出图片,查看是否符合md5要求
/**检查内容中的图片否含有外部链接*/ function checkExternalLinks(content){var pattern /<img[^>]src["]([^"])["][^>]*>/g;var match;var index 0;while ((match pattern.exec(content)) ! null) {var imageUrl match[1];var regex /\/sto…...
新手小白如何学好UI设计?一般学多久? 优漫动游
学习UI设计首先就是软件:PS、AI、CDR等但是掌握了软件不等于就掌握了UI设计,设计的思维也是很重要的网上很多关于UI设计的教程视频,可以多去看看 广州平面设计培训 要多久这个看个人的学习能力吧,有些人天资聪慧,很快…...
实现 Rollup 插件alias 并使用vitest提高开发效率
本篇文章是对 实现 Rollup 插件 alias | 使用 TypeScript 实现库的基本流程 | 使用单元测试提高开发效率 的总结。其中涉及到开发一个组件库的诸多知识点。 实现一个经常用的 rollup 插件 alias 首先执行npm init命令初始化一个package.json文件,因为插件使用了ty…...
【DSL】ES+DSL 查询语法
【DSL】ESDSL 查询语法 一、前言二、定义1.基本介绍2.语法说明(1)关键字(Keywords)(2)标识符(Identifiers)(3)表达式(Expressions)(4)运算符(Operators)(5)函…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
