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

news2024/11/22 21:59:57

文章目录

  • 前言
  • 一、登录单接口自动化测试
  •       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:针对响应结果进行断言

  # 断言响应状态码为200
        assert 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:针对响应结果进行断言

# 断言响应状态码为200
        assert 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)
        # 断言响应状态码为200
        assert status == response.status_code
        # 断言响应数据包含'成功'
        assert message in response.text
        # 断言响应json数据中code值
        assert code == response.json().get("code")

2.1 json文件实现数据驱动

总结

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

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

相关文章

实验6 形态学图像处理

1. 实验目的 ①掌握数字图像处理中,形态学方法的基本思想; ②掌握膨胀、腐蚀、开运算、闭运算等形态学基本运算方法; ③能够利用形态学基本运算方法,编程实现图像去噪,边界提取等功能。 2. 实验内容 ①调用Matlab /…

数据资产铸就市场竞争优势:运用先进的数据分析技术,精准把握市场脉搏,构建独特的竞争优势,助力企业实现市场领先地位,赢得持续成功

目录 一、引言 二、数据资产的重要性 三、先进数据分析技术的应用 1、大数据分析技术 2、人工智能与机器学习 3、数据可视化技术 四、精准把握市场脉搏 1、深入了解客户需求 2、预测市场趋势 3、优化资源配置 五、构建独特的竞争优势 1、定制化产品和服务 2、精准营…

计算机网络原理及应用

第一章 计算机网络概述 【1】局域网 局域网是指在某一区域内由多台计算机互联而成的计算机通信网络。 【1】互通 两个网络之间可以交换数据。 第二章 计算机网络的体系结构 【1】语义 何时发出何种控制信息,完成何种动作以及做出何种响应。 【2】简述网络协…

1Panel运维利器:功能详解与实操指南

官网地址:https://1panel.cn/ 1Panel简介 1Panel是杭州飞致云信息科技有限公司旗下产品,是一款现代化、开源的Linux服务器运维管理面板,于2023年3月推出。 名称:1Panel开源Linux面板 所属公司:杭州飞致云信息科技有限公司 编写语…

【C++】————string基础用法及部分函数底层实现

作者主页: 作者主页 本篇博客专栏:C 创作时间 :2024年6月30日 前言: 本文主要介绍STL容器之一 ---- string,在学习C的过程中,我们要将C视为一个语言联邦(摘录于Effective C 条款一&#x…

智能旅行规划的未来:大模型与形式化验证的融合

我们在做旅行规划时面对众多的目的地选择、复杂的交通连接、预算限制以及个人偏好等多重因素,即使是最有经验的旅行者也可能会陷入选择困境。传统的旅行规划方法往往依赖于人工操作,这不仅耗时耗力,而且难以保证计划的最优性和可执行性。 本…

Linux——/etc/passwd文件含义,grep,cut

/etc/passwd文件含义 作用 - 记录用户账户信息:共分为7段,使用冒号分割 含义 - 文件内容意义:账户名:密码代号x:UID:GID:注释:家目录:SHELL - 第7列/sbin/nologin&#x…

sheng的学习笔记-AI-聚类(Clustering)

ai目录 sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是聚类 在“无监督学习”(unsupervised learning)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。此类学…

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际,算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业,华院计算在人工智能的广阔天地中,不断探索、创新,致力于将算法的潜力发挥到极致。在过去的时日里,华院计算不断探索…

昇思25天学习打卡营第7天|模型训练

模型训练 模型训练一般分为四个步骤: 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 前面几天依次学习了前面几个步骤的操作,今天继续学习模型训练。 数据集和神经网络模型这个前面已经有详细的介绍。准确…

力扣SQL50 连续出现的数字 distinct

Problem: 180. 连续出现的数字 👨‍🏫 力扣官解 Code SELECT DISTINCTl1.Num AS ConsecutiveNums FROMLogs l1,Logs l2,Logs l3 WHEREl1.Id l2.Id - 1AND l2.Id l3.Id - 1AND l1.Num l2.NumAND l2.Num l3.Num ;

线程安全问题(二)——死锁

死锁 前言可重入锁逻辑 两个线程两把锁(死锁)死锁的特点多个线程多把锁(哲学家就餐问题)总结 前言 在前面的文章中,介绍了锁的基本使用方式——锁 在上一篇文章中,通过synchronized关键字进行加锁操作&am…

只需10分钟1条,全是原创精美视频,拆分8个步骤详细讲解!

不少朋友在问如何快速学习剪辑视频,网上还有很多在收几百到几千学费。其实所有的付费,都是认知与信息差。 这篇文章我直接讲干货,内容不多,大概3分钟可以看完。所有步骤都是富哥亲测的内容,每条视频长达1分钟以上&…

检索增强生成RAG系列4--RAG优化之问题优化

在系列2的章节中罗列了对RAG准确度的几个重要关键点,主要包括2方面,这一章就针对其中问题优化来做详细的讲解以及其解决方案。 从系列2中,我们知道初始的问题可能对于查询结果不是很好,可能是因为问题表达模糊、语义与文档不一致等…

职场必备:三大神器助你完美驾驭工作与生活;从 GTD 到SMART再到OKR:提升效率的终极指南;告别拖延,高效工作的秘密武器!

在现代职场和个人生活中,有效的时间管理和目标设定是成功的关键。我们每天都面临着无数的任务和目标。如何在纷繁复杂的日常中保持专注,高效地完成工作? GTD(Getting Things Done) GTD(Getting Things Don…

容器技术-docker4

一、docker资源限制 在使用 docker 运行容器时,一台主机上可能会运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说…

Qt:5.QWidget属性介绍(isEnabled和geometry)

目录 一、 QWidget属性的介绍: 二、Enabled属性: 2.1Enabled属性的介绍: 2.2获取控件当前可用状态的api——isEnabled(): 2.3设置控件当前的可用状态的api—— setEnabled() : 2.4 实例:通过一个按钮&…

Gin框架基础

1、一个简单的Gin示例 下载并安装Gin: go get -u github.com/gin-gonic/gin1.1 一个简单的例子 package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {// 创建一个默认的路由引擎r : gin.Default()// 当客户端以GET方式访问 /hello…

企业化运维(6)_redis数据库

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 redis是一个key-value存储系统。和Memcached类似&#xff0…

优化模型验证30:多车场车辆路径问题模型及Gurobipy验证

目录 1 数学模型 1.1 用到的符号集合 1.2 模型公式 2 模型验证代码 2.1 Gurobipy代码 2.2 结果可视化 多车场车辆路径问题的定义:大型的物流公司拥有多个车场,而每个车场都有若干车辆用于配送,决策者需要根据客户的所在位置,将客户分配到合适的车场和车辆中。 1 数学模…