接口自动化测试yaml+requests+allure技术,你学会了吗?

前言

接口自动化测试是在软件开发过程中常用的一种测试方式,通过对接口进行自动化测试,可以提高测试效率、降低测试成本。在接口自动化测试中,yaml、requests和allure三种技术经常被使用。

一、什么是接口自动化测试

接口自动化测试是指通过编写自动化脚本来模拟用户请求系统接口,并对返回结果进行验证和比对的过程。它可以帮助测试人员快速检查接口是否正常工作,并及时发现和修复潜在问题。

二、为什么要进行接口自动化测试

提高测试效率:与手动测试相比,接口自动化测试可以更快地执行测试,从而加快测试速度。

降低测试成本:自动化测试可以大大减少测试人员的工作量,并减少测试需要的时间与资源。

更好的测试覆盖率:通过自动化测试,可以对每一个接口进行全面测试,在保证测试质量的同时,提高了测试覆盖率。

方便持续集成:接口自动化测试可以方便地与持续集成工具(如Jenkins等)结合,实现自动化构建和测试。

三、接口自动化测试的流程

接口自动化测试的主要流程包括:

定义测试用例和测试数据:根据接口文档和需求规格书,定义需要进行测试的接口以及对应的测试用例和测试数据。

编写自动化脚本:使用yaml语言编写自动化脚本,模拟用户发送请求并对返回结果进行验证和比对。

执行测试:执行自动化脚本,验证接口是否正常工作,并记录测试结果。

生成报告:使用allure技术生成测试报告,帮助测试人员更好地理解测试结果和找到问题。

四、yaml语言介绍

YAML是一种轻量级的数据序列化格式,它可以用来表示复杂数据结构,如列表、字典等。在接口自动化测试中,我们可以使用YAML来定义测试用例和测试数据。

以下是一个简单的YAML文件示例:

- name: get user infourl: /api/user/infomethod: GETheaders:Content-Type: application/jsonAuthorization: Bearer {token}params:id: 123expected:status_code: 200body:id: 123name: John Doeemail: john.doe@example.com

在这个例子中,我们通过YAML定义了一个名为“get user info”的测试用例,该用例向服务器发出GET请求,获取id为123的用户信息,并验证返回的状态码为200,返回的响应体中包含id、name和email三个字段。

五、requests库介绍

Requests是一个Python第三方库,用于发送HTTP请求。在接口自动化测试中,我们可以使用Requests库来模拟用户向服务器发送请求,并获取返回结果。

以下是一个简单的Requests代码示例:

import requestsurl = 'http://localhost:8080/api/user/info'
headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer {token}'}
params = {'id': 123}response = requests.get(url, headers=headers, params=params)assert response.status_code == 200
assert response.json()['id'] == 123
assert response.json()['name'] == 'John Doe'
assert response.json()['email'] == 'john.doe@example.com'

在这个例子中,我们使用Requests库发送了一个GET请求,获取id为123的用户信息,并对返回结果进行验证和比对。

六、allure技术介绍

Allure是一款开源测试报告框架,它可以帮助

测试人员更好地记录和展示测试结果,包括测试用例的执行情况、错误信息、截图等。在接口自动化测试中,我们可以使用Allure来生成漂亮、易读的测试报告。

以下是一个简单的Allure代码示例:

import allure
import requests@allure.feature('用户管理')
def test_get_user_info():url = 'http://localhost:8080/api/user/info'headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer {token}'}params = {'id': 123}with allure.step('发送请求'):response = requests.get(url, headers=headers, params=params)with allure.step('验证返回结果'):assert response.status_code == 200assert response.json()['id'] == 123assert response.json()['name'] == 'John Doe'assert response.json()['email'] == 'john.doe@example.com'allure.attach(requests.request.method, "请求方法")allure.attach(requests.request.url, "请求URL")allure.attach(str(requests.request.headers), "请求Headers")allure.attach(str(requests.request.body), "请求Body")allure.attach(str(response.status_code), "响应状态码")allure.attach(str(response.headers), "响应Headers")allure.attach(str(response.json()), "响应Body")

在这个例子中,我们使用Allure装饰器来标记测试用例的属性,如feature(测试用例所属模块)、step(测试用例步骤)、attach(附加信息),然后通过Allure的API将相关信息以HTML格式输出到测试报告中。

七、总结

接口自动化测试是一种重要的测试方式,可以提高测试效率、降低测试成本。在接口自动化测试中,yaml、requests和allure三种技术经常被使用。具体而言,我们可以通过YAML来定义测试用例和测试数据,使用Requests库来模拟用户向服务器发送请求,并获取返回结果,最后使用Allure技术生成漂亮、易读的测试报告。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

【C++】哈希的应用 —— 布隆过滤器

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】STL…

基于微信小程序的个人健康数据管理平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

微服务技术栈-Docker应用部署

文章目录 前言一、数据卷二、Docker 应用部署1、MySQL部署2、Tomcat部署3、Nginx部署4、Redis部署5、Kafka部署 总结 前言 之前文章讲到过,docker运行程序的过程就是去仓库把镜像拉到本地,然后用一条命令把镜像运行起来变成容器,接下来我们将…

【数据库问题】删除数据库失败,提示:there is 1 other session using the database

删除数据库失败&#xff0c;提示&#xff1a;there is 1 other session using the database 解决办法&#xff1a; SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datnametest_database AND pid<>pg_backend_pid(); 使用上述命令先关…

HTML5+CSS3+JS小实例:仿优酷视频轮播图

实例:仿优酷视频轮播图 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=&quo…

自然语言处理 | WordNet

WordNet是词汇数据库,即英语词典,专为自然语言处理而设计。 Synset是一种特殊的简单接口,存在于 NLTK 中, 用于在 WordNet 中查找单词。同义词集实例是表达相同概念的同义词的分组。有些单词只有一个同义词集,有些则有多个。

三点式振荡器

相关说明 http://www.360doc.com/content/19/0527/16/61619294_838545271.shtml 高频信号发生器设计—电容三点式振荡电路_电容三点式振荡电路工作原理_北辰-尘的博客-CSDN博客 如上图所示&#xff0c;典型的Colpitts振荡电路。首先忽略所有的电阻&#xff0c;他们是用来设置…

Linux通过QQ邮箱账号使用mailx发送邮件

Linux通过QQ邮箱账号使用mailx发送邮件 第一步&#xff1a;安装mailx 第二步&#xff1a;获取邮箱的授权码 第三步&#xff1a;配置mailx服务 第四步&#xff1a;添加数字证书 第五步&#xff1a;发送邮件测试&#xff01; 第一步&#xff1a;安装mailx # 安装mailx yum…

Android多线程学习:线程池(二)

一、线程池运行流程 具体执行流程如下&#xff1a; 1、首先检测线程池运行状态&#xff0c;如果不是RUNNING&#xff0c;则直接拒绝&#xff0c;线程池要保证在RUNNING的状态下执行任务&#xff1b; 2、如果workerCount < corePoolSize&#xff0c;则创建并启动一个线程来…

2023年中国临床信息系统市场规模及细分市场结构分析[图]

临床信息系统(ClinicalInformationSystem&#xff09;&#xff0c;其主要目标是支持医院医护人员的临床活动&#xff0c;收集和处理病人的临床医疗信息&#xff0c;丰富和积累临床医学知识&#xff0c;并提供临床咨询、辅助诊疗、辅助临床决策。传统上&#xff0c;一些人把直接…

如何在 Spring Boot 中进行分布式追踪

在 Spring Boot 中进行分布式追踪 分布式系统中的应用程序由多个微服务组成&#xff0c;它们可以位于不同的服务器、容器或云中。当出现问题时&#xff0c;如性能瓶颈、错误或延迟&#xff0c;了解问题的根本原因变得至关重要。分布式追踪是一种用于跟踪和分析分布式应用程序性…

【数据库——MySQL】(14)过程式对象程序设计——游标、触发器

目录 1. 游标1.1 声明游标1.2 打开游标1.3 读取游标1.4 关闭游标1.5 游标示例 2. 触发器2.1 创建触发器2.2 修改触发器2.3 删除触发器2.4 触发器类型2.5 触发器示例 参考书籍 1. 游标 游标一般和存储过程一起配合使用。 1.1 声明游标 要使用游标&#xff0c;需要用到 DECLAR…

java Spring Boot整合jwt实现token生成

先在 pom.xml 文件中注入依赖 <!-- JWT --> <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version> </dependency> <dependency><groupId>io.jsonw…

ctfshow-web12(glob绕过)

打开链接&#xff0c;在网页源码里找到提示 要求以get请求方式给cmd传入参数 尝试直接调用系统命令&#xff0c;没有回显&#xff0c;可能被过滤了 测试phpinfo&#xff0c;回显成功&#xff0c;确实存在了代码执行 接下来我们尝试读取一下它存在的文件&#xff0c;这里主要介…

JavaScript中的深拷贝(deep copy)和浅拷贝(shallow copy)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

5MW风电永磁直驱发电机-1200V直流并网Simulink仿真模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

浅析森林烟火AI检测算法的应用及场景使用说明

一、方案背景 现有的森林防火监测系统落后&#xff0c;以人工地面巡护、瞭望塔高点巡查为主&#xff0c;存在巡护范围有限、巡护效率低等问题&#xff0c;建立健全的森林防火风险预警体系&#xff0c;实现对森林、林场等场景的全天候智能自动监测、火情预警&#xff0c;及时发…

如何通过三行配置解决在Kubernetes中的gRPC扩展问题

一切都始于我向我们的高级软件工程师提出的一个问题&#xff1a; “忘掉通信速度。你真的觉得在gRPC中开发通信比REST更好吗&#xff1f;” 我不想听到的答案立刻就来了&#xff1a;“绝对是的。” 在我提出这个问题之前&#xff0c;我一直在监控我们的服务在滚动更新和扩展Po…

lua学习笔记

单行注释&#xff1a; 多行注释&#xff1a; 命名&#xff1a; Lua不支持下划线大写字母&#xff0c;比如&#xff1a;_ABC 但支持&#xff1a;_abc 关键字&#xff1a; 全局变量&#xff1a; 直接变量名 内容就是全局 局部变量&#xff1a; 加上local即可 nil&#xff1…

服务器上部署python脚本

1.查看服务器上的python是否自带&#xff0c;一般都自带 2.将本地脚本上传到服务器 3.直接运行一下脚本看报什么错误 代码错误&#xff0c; 将f删除后报别的错误 上面是未安装依赖的错误。我们安装一下依赖 下面是编码的解决 #!/usr/bin/python # -*- coding: utf-8 -*- 先把…