【接口自动化测试】第四节.实现项目核心业务的单接口自动化测试

文章目录

  • 前言
  • 一、登录单接口自动化测试
  •       1.1 登录单接口文档信息
  •       1.2 登录成功
  •       1.3 登录失败(用户名为空)
  • 二、数据驱动的实现
  •       2.1 json文件实现数据驱动
  • 总结


前言


一、登录单接口自动化测试

1.1 登录单接口文档信息

需求:
  • 完成测试脚本的业务实现
  • 针对响应结果进行断言


1.2 登录成功

登录成功接口文档信息:


登录成功测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理

# 导包
from api.login import LoginAPI# 创建测试类
class TestLoginAPI:# 初始化uuid = None# 前置处理def setup(self):# 实例化接口类self.login_api = LoginAPI()# 获取验证码response = self.login_api.get_verify_code()print(response.json())# 提取验证码接口返回的uuid参数值TestLoginAPI.uuid = response.json().get("uuid")print(TestLoginAPI.uuid)# 后置处理def teardown(self):pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建登录成功方法,并实现获取验证码和登录操作

# 登录成功def test01_success(self):login_data = {"username": "manager","password": "123456","code": "2","uuid": TestLoginAPI.uuid}response = self.login_api.login(test_data=login_data)

步骤3:针对响应结果进行断言

  # 断言响应状态码为200assert 200 == response.status_code# 断言响应数据包含'成功'assert '成功' in response.text# 断言响应json数据中code值assert 200 == response.json().get("code")

断言依据:


1.3 登录失败(用户名为空)

登录失败(用户名为空)文档信息:


登录成功测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI# 创建测试类
class TestLoginAPI:# 初始化uuid = None# 前置处理def setup(self):# 实例化接口类self.login_api = LoginAPI()# 获取验证码response = self.login_api.get_verify_code()print(response.json())# 提取验证码接口返回的uuid参数值TestLoginAPI.uuid = response.json().get("uuid")print(TestLoginAPI.uuid)# 后置处理def teardown(self):pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建登录失败(用户名为空)方法

# 登录失败(用户名为空)def test02_without_username(self):login_data = {"username": "",//此处用户名设置为空"password": "123456","code": "2","uuid": TestLoginAPI.uuid}response = self.login_api.login(test_data=login_data)

步骤3:针对响应结果进行断言

# 断言响应状态码为200assert 200 == response.status_code# 断言响应数据包含'错误'assert '错误' in response.text# 断言响应json数据中code值assert 500 == response.json().get("code")

断言依据:


二、数据驱动的实现

1.什么是数据驱动?
维护焦点:测试数据
数据驱动:
以测试数据驱动脚本执行,维护焦点从脚本转向测试数据的一种自动化 测试设计模式
图示说明:
维护测试数据:

2.如何实现数据驱动?

图示说明:

pytest中parametrize装饰器
(1)作用:遍历所有测试数据并运行测试方法。
(2) 语法:
@pytest.mark.parametrize ( ②保存数据参数名, ①测试数据 )
def test_method(self, ③参数名 )
pass
示例:
test_data = [( "manager", "123456" ), ("", "123456"), ("itheima", "123456")]
@pytest.mark.parametrize(" mobile, passwd ", test_data )
def test_login(self, mobile, passwd )
pass
对应上面语法。

针对登录接口实现步骤:

需求:
针对登录接口,将请求数据和断言数据组织成JSON文件,完成自动化测试。
步骤1:准备测试数据
# 测试数据①测试数据test_data = [("manager", "123456", 200, '成功', 200),("", "123456", 200, '错误', 500),("jack666", "123456", 200, '错误', 500),]

步骤2:所以pytest中parametrize装饰器

#登录单接口实现
@pytest.mark.parametrize(②保存数据参数名"username, password, status, message, code" ,①测试数据test_data)def test01_success(self, ③参数名username, password, status, message, code):login_data = {"username": username,"password": password,"code": "2","uuid": TestLoginAPI.uuid}response = self.login_api.login(test_data=login_data)# 断言响应状态码为200assert status == response.status_code# 断言响应数据包含'成功'assert message in response.text# 断言响应json数据中code值assert code == response.json().get("code")

2.1 json文件实现数据驱动

总结

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

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

相关文章

LeetCode 子集

原题链接78. 子集 - 力扣(LeetCode) 这是一道暴力搜索问题参考大佬们的题解,对这类题目做出一下总结 1.确定递归参数变量 2.递归结束条件 3.做出选择,递归调用进入下一层 4.回溯,返回到递归前的状态 要完成前面这…

【Matlab函数分析】imread从图形文件读取图像

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

Qt6.6编译Qt二维图形编辑器QVGE源码

QVGE是一个开源的多平台QtC编写的图形编辑器,可以用来画网络节点图,或者其他作用。 QVGE可以轻松创建和参数设定的小型到中型图形(1000节点/边缘),共同的视觉特性的节点和边缘:形状、尺寸、颜色、标签等。定义(用户定义)属性的图表…

前端技术(二)——javasctipt 介绍

一、javascript基础 1. javascript简介 ⑴ javascript的起源 ⑵ javascript 简史 ⑶ javascript发展的时间线 ⑷ javascript的实现 ⑸ js第一个代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>…

探究Qt5【元对象编译器,moc】的 设计原理和技术细节

Qt5是一个跨平台C框架&#xff0c;它有个突出的特点就是其元对象系统&#xff0c;该系统通过扩展C的能力&#xff0c;为事件处理提供了信号与槽机制、为对象内省提供了属性系统。为了支持这些特性&#xff0c;Qt引入了元对象编译器&#xff08;Meta-Object Compiler, MOC&#…

C++视觉开发 一.OpenCV环境配置

一.OpenCV安装环境配置 1.OpenCV安装 &#xff08;1&#xff09;下载 官方下载链接&#xff1a;http://opencv.org/releases 这边选择需要的版本&#xff0c;我是在windows下的4.9.0。&#xff08;科学上网下载很快&#xff0c;否则可能会有点慢&#xff09; (2)安装 双击下…

使用systemd管理Linux下的frps服务:安装、配置及自动化操作指南

在 Linux 系统下&#xff0c;使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。以下是具体的操作步骤&#xff1a; 1. 安装 systemd 如果您的 Linux 服务器上尚未安装 systemd&#xff0c;可以使用包管理器如 yum&#xff08;适用于 Cent…

基于RabbitMQ的异步消息传递:发送与消费

引言 RabbitMQ是一个流行的开源消息代理&#xff0c;用于在分布式系统中实现异步消息传递。它基于Erlang语言编写&#xff0c;具有高可用性和可伸缩性。在本文中&#xff0c;我们将探讨如何在Python中使用RabbitMQ进行消息发送和消费。 安装RabbitMQ 在 Ubuntu 上安装 Rabbi…

GaussDB关键技术原理:高性能(三)

GaussDB关键技术原理&#xff1a;高性能&#xff08;二&#xff09;从查询处理综述对GaussDB的高性能技术进行了解读&#xff0c;本篇将从查询重写RBO、物理优化CBO、分布式优化器、布式执行框架、轻量全局事务管理GTM-lite等五方面对高性能关键技术进行分享。 目录 3 高性能…

PyTorch之nn.Module、nn.Sequential、nn.ModuleList使用详解

文章目录 1. nn.Module1.1 基本使用1.2 常用函数1.2.1 核心函数1.2.2 查看函数1.2.3 设置函数1.2.4 注册函数1.2.5 转换函数1.2.6 加载函数 2. nn.Sequential()2.1 基本定义2.2 Sequential类不同的实现2.3 nn.Sequential()的本质作用 3. nn.ModuleList参考资料 本篇文章主要介绍…

AI绘画-Stable Diffusion 原理介绍及使用

引言 好像很多朋友对AI绘图有兴趣&#xff0c;AI绘画背后&#xff0c;依旧是大模型的训练。但绘图类AI对计算机显卡有较高要求。建议先了解基本原理及如何使用&#xff0c;在看看如何实现自己垂直行业的绘图AI逻辑。或者作为使用者&#xff0c;调用已有的server接口。 首先需…

Open3D (C++) 点云旋转至主成分空间

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 首先使用主成分分析法计算出点云的特征值与特征向量,然后根据点云的特征向量计算出点云与主成分空间之间的…

CAM350怎么添加文字?

CAM350怎么添加文字&#xff1f; CAM350只能修改用CAM350本身做的文字&#xff0c;其它软件生成的GERBER文件导入到CAM350会默认为线条&#xff0c;没办法修改。 如果想添加文字&#xff0c;先把原先的文字删除。然后在CAM350里面重新添加文字就可以了。 操作方法如下&#xf…

Java代码生成器(开源版本)

一、在线地址 Java在线代码生成器&#xff1a;在线访问 二、页面截图 三、核心功能 支持Mybatis、MybatisPlus、Jpa代码生成使用 antlr4 解析SQL语句&#xff0c;保证了SQL解析的成功率支持自定义包名、作者名信息支持自定义方法名、接口地址支持自定义选择是否生成某个方法…

力扣 单链表元素删除解析及高频面试题

目录 删除元素的万能方法 构造虚拟头结点来应对删除链表头结点的情况 一、203.移除链表元素 题目 题解 二、19.删除链表中倒数第K个节点 题目 题解 三、 83.删除某个升序链表中的重复元素&#xff0c;使重复的元素都只出现一次 题目 题解 82.删除某个升序链表中的…

mongodb在windows环境安装部署

一、mongodb 1.释义 MongoDB 是一种开源的文档型 NoSQL 数据库管理系统&#xff0c;使用 C 编写&#xff0c;旨在实现高性能、高可靠性和易扩展性。MongoDB 采用了面向文档的数据模型&#xff0c;数据以 JSON 风格的 BSON&#xff08;Binary JSON&#xff09;文档存储&#x…

第一周:李宏毅机器学习笔记

第一周学习周报 摘要一、机器学习基础理论1. 什么是机器学习&#xff1f;2. 机器学习“寻找”的函数有哪些类型&#xff1f;3. 机器学习中机器如何“寻找”函数&#xff1f;三步走3.1 第一步&#xff1a;设定函数的未知量&#xff08;Function with Unknown Parameters&#xf…

SpringMvc 执行原理

当用户请求 会发送到前端控制器&#xff0c;DisptcherServlet根据请求参数生成代理请求&#xff0c;找到对应的实际控制器&#xff0c;控制器处理请求&#xff0c;创建数据模型&#xff0c;访问数据库&#xff0c;将模型响应给中心控制器&#xff0c;控制器使用模型与视图渲染视…

09_计算机网络模型

目录 OSI/RM七层模型 OSI/RM七层模型 各层介绍及硬件设备 传输介质 TCP/IP协议簇 网络层协议 传输层协议 应用层协议 完整URL的组成 IP地址表示与计算 分类地址格式 子网划分和超网聚合 无分类编址 特殊含义的IP地址 IPv6协议 过渡技术 OSI/RM七层模型 OSI/RM七…

⭐Ollama的本地安装⚡

先来逛一下咱们的主角Ollama的官网地址&#xff1a; Ollama 大概长这个样子&#x1f914; 因为本地系统的原因&#xff0c;文章只提供Widows的安装方式&#xff0c;使用Linux和Mac的大佬&#xff0c;可以自行摸索&#x1f9d0; 下载完成后就是安装了&#x1f355;&#xff0c…