Jenkins+Robot 接口自动化测试

news2024/11/22 22:43:16

目录

前言:

设计目标

项目说明

目录结构

配置 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.coloradmin.cn/o/754832.html

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

相关文章

代码随想录day3 | 203.移除链表元素 707.设计链表 206.反转链表

文章目录 一、移除链表元素的思想两种方法 二、203.移除链表元素三、707.设计链表四、206.反转链表 一、移除链表元素的思想 直接让前一个节点指向后一个节点即可 两种方法 第一种:直接删除 第二种:头删的时候,直接headhead->next 其实…

JAVA数据结构、集合操作及常用API_C++开发转JAVA

文章目录 零、引言一、JAVA数据结构基础1.0 数据类型概述1.1 基本数据类型 零、引言一、JAVA数据结构基础1.0 数据类型概述1.1 基本数据类型1.2 包装类1.3 基本类型和包装类型的区别1.4 包装类型的缓存机制1.5 equals() 和 1.6 自动装箱拆箱1.7 浮点数精度丢失1.8 数值、字符转…

windows下配置pytorch + yolov8+vscode,并自定义数据进行训练、摄像头实时预测

最近由于工程需要,研究学习了一下windows下如何配置pytorch和yolov8,并自己搜集数据进行训练和预测,预测使用usb摄像头进行实时预测。在此记录一下全过程 一、软件安装和配置 1. vscode安装 windows平台开发python,我采用vscod…

Python基础合集 练习26 (turtle库的使用)

turtle是标准库 import turtle as t 窗口最小单位为像素 t.steup(width,height,起始点,起始点) 不是必须的 t.setup(800, 400) 不设置后面的起始点默认在中间 空间坐标体系 绝对坐标 四个象限 t.goto(x,y) 让某个位置的海龟到达某个地方 t.goto(100,100) t.goto(10…

使用flask开启一个简单的应用

Flask是非常流行的 Python Web框架,它能如此流行,原因主要有如下几点: 。有非常齐全的官方文档,上手非常方便。 。有非常好的扩展机制和第三方扩展环境,.工作中常见的软件都会有对应的扩展。自己动手实现扩展也很容易。 。社区活跃度非常高。…

【可解释学习】PyG可解释学习模块torch_geometric.explain

PyG可解释学习模块torch_geometric.explain PhiloshopyExplainerExplanationsExplainer AlgorithmExplanation Metrics参考资料 torch_geometric.explain是PyTorch Geometric库中的一个模块,用于解释和可视化图神经网络(GNN)模型的预测结果。…

RestClient操作文档和DSL查询语法

一、 文档操作 1、新增文档 本案例中,hotel为索引库名,61083为文档idTestvoid testAddDocument() throws IOException {// 1.根据id查询酒店数据Hotel hotel hotelService.getById(61083L);// 2.转换为文档类型HotelDoc hotelDoc new HotelDoc(hotel…

【数据结构】二叉树——链式结构

目录 一、前置声明 二、二叉树的遍历 2.1 前序、中序以及后序遍历 2.2 层序遍历 三、节点个数以及高度 3.1 节点个数 3.2 叶子节点个数 3.3 第k层节点个数 3.4 二叉树的高度/深度 3.5 查找值为x的节点 四、二叉树的创建和销毁 4.1 构建二叉树 4.2 二叉树销毁 4.3 …

2023年7月14日,ArrayList底层

集合框架图: 集合和数组的区别 AarrayList ArrayList底层实现原理 ArrayList的底层实现是基于数组的动态扩容。 初始容量:当创建一个新的ArrayList对象时,它会分配一个初始容量为10的数组。这个初始容量可以根据需求进行调整。 //表示默认的…

在Python中优雅地用多进程:进程池 Pool、管道通信 Pipe、队列通信 Queue、共享内存 Manager Value

Python 自带的多进程库 multiprocessing 可实现多进程。我想用这些短例子示范如何优雅地用多线程。中文网络上,有些人只是翻译了旧版的 Python 官网的多进程文档。而我这篇文章会额外讲一讲下方加粗部分的内容。 创建进程 Process,fork 直接继承资源&am…

zigbee DL-20无线串口收发模块使用(双车通讯,电赛模块推荐)

前言 (1)通常有时候,我们可能会需要让两个MCU进行通讯。而zigbee是最适合两个MCU短距离通讯的模块。他使用极其简单,非常适合两款MCU之间的进行数据交互。 (2)在各类比赛中,经常出现需要两个MCU…

独立看门狗 IWDG

独立看门狗介绍 Q:什么是看门狗? A:可以理解为对于一只修勾的定时投喂,如果不给它吃东西就会狂叫,因此可以通过观察修勾的状态来判断喂它的人有没有正常工作。 在由单片机构成的微型计算机系统中,由于单…

【业务功能篇44】Mysql 海量数据查询优化,进行分区操作

业务场景:当前有个发料表,随着业务数据量增多,达到了几千万级别水平,查询的效率就越来越低了,针对当前的架构情况,我们进行了分区的设置,通过对时间字段,按年月,一个月作…

ios 启动页storyboard 使用记录

本文简单记录ios启动页storyboard 如何使用和注意事项。 xcode窗口简介 以xcode14为例,新建项目如下图,左边文件栏中的LaunchScreen.storyboard 为默认启动页布局。窗口中间部分是storyboard中的组件列表,右侧为预览,可以看到渲…

H3C-Cloud Lab-实验-DHCP实验

实验拓扑图: 实验需求: 1、按照图示为R1配置IP地址 2、配置R1为DHCP服务器,提供服务的地址池为192.168.1.0/24网段,网关为192.168.1.254,DNS服务器地址为202.103.24.68,202.103.0.117 3、192.168.1.10-1…

Camtasia Studio 2023 最新中文版,camtasiaStudio如何添加背景音乐

Camtasia2023的视频编辑工具可以帮助用户剪辑、裁剪、旋转、调整大小、添加特效、混合音频等。用户还可以使用Camtasia2023的字幕功能添加字幕和注释,以及使用其内置的特效和转场来提高视频的视觉效果。 Camtasia Studio 2023新功能介绍 的光标增强 由于光标在屏幕…

解决win10电脑无法访问局域网内其它共享文件问题

问题描述 今天需要上传文件到一个共享的局域网文件夹里,在我的电脑和浏览器访问//192.168.0.16//public都提升访问受限,开始以为是因为用户没授权,后来一般沟通后,发现其它电脑都能正常访问的,所以确定是自己电脑配置…

Caerulein,17650-98-5,雨蛙肽,以三氟醋酸盐形式提供的十肽分子

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ Caerulein |雨蛙素,雨蛙肽,蓝肽| CAS:17650-98-5 | 纯度:95% ------雨蛙素结构式---- ----试剂参数信息--- CAS号:17650-98-5 外观(Appearance&a…

java中使用POI生成Excel并导出

注:本文章中代码均为本地Demo版本,若后续代码更新将不会更新文章 需求说明及实现方式 根据从数据库查询出的数据,将其写入excel表并导出 我的想法是通过在实体属性上写自定义注解的方式去完成。因为我们在代码中可以通过反射的方式去获取实体…

js小写金额转大写 自动转换

// 小写转为大写convertCurrency(money) {var cnNums [零, 壹, 贰, 叁, 肆, 伍, 陆, 柒, 捌, 玖]var cnIntRadice [, 拾, 佰, 仟]var cnIntUnits [, 万, 亿, 兆]var cnDecUnits [角, 分, 毫, 厘]// var cnInteger 整var cnIntLast 元var maxNum 999999999999999.9999var…