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 存放与断言相关的关键字
      1. 包括解析 json 的关键字
      2. 同时还有对比数据库结果与 json 指定值的对比,支持多个对比
      3. 支持正则匹配 json
    • dbUtil 存放与数据库相关的关键字
  • Files 存放调用接口需要用到的文件
  • Report 存放测试产生的报告

配置 jenkins

每次手动执行 robot 比较麻烦,利用 jenkins 每次从 git 上拉取最新的测试用例,保证项目的持续集成以及自动回归

1.安装插件

  1. 点击系统管理->插件管理
  2. 点击【可选插件】,在过滤器中输入 robot 可以进行搜索
  3. 安装插件

2.配置项目

  1. 增加新自由项目
  2. 添加源码管理,因为我们仓库是 git,所以选择 git
  3. 可以设置构建触发器,比如可以设置每天跑一次0 0 * * *
  4. 在项目中选择 execute window batch command 填入运行的命令,如用 pybot.bat -I [tagname] [用例项目路径]
  5. 增加构建后步骤,加入 Publish Robot Framework test results
  6. 设置测试通过目标
  7. 通过 ExtendedEmailPublisher 插件增加邮件模版
  8. 构建就可以看到结果了

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)

相信能使你更好的进步!

点击下方小卡片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

55 # 实现可写流

先在 LinkedList.js 给链表添加一个移除方法 class Node {constructor(element, next) {this.element element;this.next next;} }class LinkedList {constructor() {this.head null; // 链表的头this.size 0; // 链表长度}// 可以直接在尾部添加内容,或者根据…

聊聊ChatGPT是如何组织对话的

为什么要组织对话? 总所周知,ChatGPT的训练大致可分为下图中展示的几个阶段,其中,在Pretraining阶段,模型的训练数据是纯文本,目标是根据上文预测下一个token,而在后面的几个阶段中&#xff0c…

网络安全能力成熟度模型介绍

一、概述 经过多年网络安全工作,一直缺乏网络安全的整体视角,网络安全的全貌到底是什么,一直挺迷惑的。目前网络安全的分类和厂家非常多,而且每年还会冒出来不少新的产品。但这些产品感觉还是像盲人摸象,只看到网络安…

回归预测 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多输入单输出回归预测

回归预测 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 回归预测 | MATLAB实现WOA-CNN鲸鱼算法优化卷积…

数据采集专家----4通道AD采集子卡推荐

FMC136是一款4通道250MHz采样率16位AD采集FMC子卡,符合VITA57规范,可以作为一个理想的IO模块耦合至FPGA前端,4通道AD通过高带宽的FMC连接器(HPC)连接至FPGA从而大大降低了系统信号延迟。 该板卡支持板上可编程采样时钟…

Linux进程

Linux进程 对于进程的理解,我们要从计算机的重要的冯诺依曼体系结构讲起,只有知道我们的程序/文件是如何在计算机中被操作运行并输出到显示器中,通过对于操作系统的理解,才能对于进程进行一定的理解。 文章目录 Linux进程冯诺依…

c#示例-json序列化和json树

序列化 由于指针和引用类型的存在,在运行中的程序中,数据不一定是整块的。 可能东一块西一块散落在内存的各个地方。 序列,是指连续且有序的一个整体。序列化就是把数据变为连续有序整体的过程。 经过这样处理后的数据就可以方便的进行传输…

数据结构--时间复杂度与空间复杂度

数据结构–时间复杂度与空间复杂度 文章目录 数据结构--时间复杂度与空间复杂度时间复杂度一、什么是时间复杂度二、具体实例1.大O的渐进表示法2.二分查找的时间复杂度 空间复杂度一、什么是空间复杂度二、具体实例总结 时间复杂度 一、什么是时间复杂度 在计算机科学中&…

云原生微服务应用的平台工程实践

作者:纳海 01 微服务应用云原生化 微服务是一个广泛使用的应用架构,而如何使得微服务应用云原生化却是近些年一直在演进的课题。国内外云厂商对云原生概念的诠释大同小异,基本都会遵循 CNCF 基金会的定义: 云原生技术有利于各组…

【后端面经-Java】JVM垃圾回收机制

【后端面经-Java】JVM垃圾回收机制 1. Where:回收哪里的东西?——JVM内存分配2. Which:内存对象中谁会被回收?——GC分代思想2.1 年轻代/老年代/永久代2.2 内存细分 3. When:什么时候回收垃圾?——GC触发条…

【MySQL】根据MVCC和Read View分析事务的四种隔离级别在读写场景分别是如何体现其隔离性的

目录 一、数据库并发的三种场景 二、读写场景的MVCC 1、3个(4个)记录隐藏列字段 2、undo log(撤销日志) 3、模拟MVCC场景 3.1update场景 3.2delete场景 3.3insert 3.4select场景 4、Read View 5、RR和RC的区别 5.1当…

Windows安装激活注意事项

选择语言、版本(Windows 10指的是专业版本)和体系结构(32位/64位),这里自行根据情况选择(如果机器预装的是Windows 10家庭中文版则选择家庭中文版,如果预装的是专业版则选择Windows 10。这样原先…

Revit 导出明细表的两种方法!

方法一、Revit中怎么灵活运用明细表格式的导出与导入 在做项目的时候,遇到一些项目需要进行工程量统计的时候,经常需要设置明细表里面的格式,例如字体、表格排布样式等,但是项目一旦多起来,这些工作重复性又太高&#…

适合小公司的自动化部署脚本

背景(偷懒) 在小小的公司里面,挖呀挖呀挖。快挖不动了,一件事重复个5次,还在人肉手工,身体和心理就开始不舒服了,并且违背了个人的座右铭:“偷懒”是人类进步的第一推动力。 每次想…

解决MAC IDEA终端每次都要source ~/.zshrc

安装nvm之后,发现每隔一段时间(不清楚是新打开一个终端还是会定时刷新)就要重新执行source ~/zshrc,才能执行nvm命令。找了一圈发现idea默认使用的shell是bash,将默认的shell改成zsh就可以,更改位置&#x…

【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警

文章目录 前言一、监控shell脚本和钉钉机器人二、创建钉钉机器人:1.在钉钉群聊里点击设置2.在设置里点击机器人选项3.再点击添加机器人4.再点击选择自定义机器人5.设置机器人名称、是否加密、是否限制ip、以及触发关键字6.获取机器人的Webhook地址 三、编写监控脚本…

[爬虫]解决机票网站文本混淆问题-实战讲解

前言 最近有遇到很多小伙伴私信向我求助,遇到的问题基本上都是关于文本混淆或者是字体反爬的问题。今天给大家带来其中一个小伙伴的实际案例给大家讲讲解决方法 📝个人主页→数据挖掘博主ZTLJQ的主页 ​​ 个人推荐python学习系列: ☄️爬虫J…

架构训练营3:架构设计流程和架构师职责

架构师相关职责: 架构师是业务和技术之间的桥梁,架构师不能只顾技术,不懂业务,架构师很容易两头不讨好 三个核心能力: 判断:1业务理解力2.技术能力3.沟通能力 拆解:1技术深度2.技术宽度3.技术…

基于单片机指纹考勤系统的设计与实现

功能介绍 以51单片机作为主控系统;利用指纹采集模块存储打卡信息;12864显示当前考勤信息,时间 ;如果迟到 语音播报 您已迟到;按键进行注册指纹、删除指纹、设置当前时间和签到时间、查询打卡等;具有掉电保存…

利用Python和Selenium编程,实现定时自动检索特定网页,发现特定网页内容发生变化后,向管理员发送提醒邮件(一)

一、项目需求 要求爬取某单位网站,登录后台查看是否有新增“网友提问”,如果有新的提问,向特定邮箱发出提醒邮件。 二、项目分析 (一)判断是否可用爬虫爬取相关内容 首先查看该网站的robots.txt文件,发现…