接口是什么如何开展pycharm+requests接口自动化

ops/2024/10/20 14:56:44/

一、了解接口

(一)接口测试

  • 定义:对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。
  • 接口分类:内部接口(登录、查看数据)、外部接口(购物、支付)
  • 目的:保证接口的正确性和稳定性
  • 原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程
  • 接口自动化
    通过编写测试脚本覆盖接口,并通过脚本执行发现接口问题,主要用于回归测试。

(二)接口的请求部分

Accept:客户端可识别的内容类型列表
Authorization:授权信息( Bearer Token:通过使用访问密钥对请求进行身份验证)
User-Agent:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本
Content-Type:用来告诉服务端消息主体是序列化的json字符串
在这里插入图片描述

(三)接口的响应部分

Content-Type:WEB服务器告诉浏览器自己响应的对象的类型和字符集
Server:指明HTTP服务器的软件信息
常见响应代码:
1xx:指示信息——表示请求已经接受,继续处理
2xx:成功——表示请求已经被成功接收、理解、接受。
3xx:重定向——要完成请求必须进行更进一步的操作
4xx:客户端错误——请求有语法错误或请求无法实现
5xx:服务器端错误——服务器未能实现合法的请求。

在这里插入图片描述

二、接口自动化怎么做

(一)基本流程

需要明确,接口自动化的开展是接口较稳定的阶段

  • 需求分析
    了解项目的业务功能,bug较多的模块,比较稳定接口有哪些,核心功能有哪些
  • 了解接口
    查看接口文档,了解接口的请求和响应;使用postman调试确保接口连通
  • 用例设计
  • 设计并调试接口脚本
    编码设计、调试接口脚本,分析用例失败原因
  • 维护脚本
    项目中存在修改、新增接口时,同步修改接口脚本
    日常优化框架,如:使用更简单的插件

(二)了解requests库

Requests库是python实现的最简单易用的HTTP库,允许发送各种 HTTP 请求,处理 cookies、会话、连接池、重定向、多种认证方式等,使得处理 HTTP 请求变得非常便捷。
通过pip命令安装:

pip install requests

使用时,需要导入:

import requests

(三)get请求实例

以下为get请求的实例,我打印了响应的代码,响应体文本和请求的地址,并且添加了一个断言。

def test_case_get():"""get请求示例"""url = "http://httpbin.org/get"resp = requests.get(url=url, params=None, headers=None)logger.info("响应代码为:{}".format(resp.status_code))logger.info("响应体为:{}".format(resp.text))logger.info("host为{}".format(resp.json()["headers"]['Host']))assert "headers" in resp.textreturn resp

实例的运行结果:
在这里插入图片描述
想要了解get请求可以添加什么参数,也可以查看get封装的源码,ctrl+b可以进入到关键字封装的源码,查看详细内容,可以看到,get请求除了url必填外,其余的参数都是可选的,比如params
在这里插入图片描述

(四)post请求实例

以下为post请求的实例,我打印了响应的代码,响应体文本和请求的地址,并且添加了一个断言。

def test_case_post():"""post请求示例"""url = "https://httpbin.org/post"data = {'key': 'value'}resp = requests.post(url=url, data=data)logger.info("响应代码为:{}".format(resp.status_code))logger.info("响应体为:{}".format(resp.text))logger.info("host为{}".format(resp.json()["headers"]['Host']))assert "form" in resp.textreturn resp

实例的运行结果:
在这里插入图片描述
post请求的参数,分享给大家了解:
在这里插入图片描述
当然,我们常见的请求之外,还有一些如put请求,delete请求,这些后续可以自行研究学习。

pytest_88">(五)初识pytest框架

pytest的特性:

  • 自动识别测试用例。(unittest当中,需要引入TestSuite,主动加载测试用例。)
  • 简单的断言表达:assert 表达式即可。(unittest当中,self.assert*)
  • 有测试会话、测试模块、测试类、测试函数级别的fixture。(unittest当中是测试类、测试函数级别的fixture)
  • 有非常丰富的插件,目前在600+,比如allure插件。(unittest无)
  • 测试用例不需要封装在测试类当中。(unittest中需要自定义类并继承TestCase)

识别规则(文件命名规范):

  • 搜索根目录:默认从当前目录中搜集测试用例
  • 搜索规则:
    1)搜索文件:符合命名规则 test_*.py 或者 *_test.py 的文件
    2)在满足1)的文件中识别用例的规则:
    2.1)以test_开头的函数名;
    2.2)以Test开头的测试类(没有__init__函数)当中,以test_开头的函数

(六)框架内各部分介绍

  • Common:存放常用工具,如自己封装的一些函数: 数据库连接、日志定制封装
  • Outputs:测试输出,包括logs和reports
  • TestCase:放置测试用例,可根据实际业务情况创 建模块,分类归档,用例脚本
  • Conftest.py:该文件主要用来做全局用例共享使用, 如参数的共享、测试fixture的定义等,一些初 始化的操作通常会放到该文件
  • Pytest.ini:为pytest本身自带的配置文件,文件位置 必须为整个工程的根目录下
  • run.py:脚本运行入口

(七)常用的库

import requests ················get、post、delete、put…
Import pytest ················pytest库,pytest.main()执行脚本
import pymysql ················连接mysql,做数据校验
Import time ················time.sleep(5)控制运行等待时间
Import json················ 响应数据json字段提取


http://www.ppmy.cn/ops/127010.html

相关文章

fluent-ffmpeg操作MP3文件深入解析

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 引言 fluent-ffmpeg是一个功能强大的Node.js库,它为FFmpeg提供了一个流畅的接口。FFmpeg是一个著名的多媒体框架,以处理音频、视频和…

Oracle或者PL/SQL导入pde文件

目录 pde文件使用pl/sql developer的 tools-> import tables-> pl/sql developer来导入;

SQL Injection | SQL 注入概述

关注这个漏洞的其他相关笔记:SQL 注入漏洞 - 学习手册-CSDN博客 0x01:SQL 注入漏洞介绍 SQL 注入就是指 Web 应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是可控的,并且参数会带入到数据库中执行,导致…

Linux的基础指令

文章目录 速览重要指令重要指令详解lsls -lls -a。 和 。。 pwdcdtouchmkdirrmdirrm 储备知识点文件-a目录和普通文件定位文件tree 速览重要指令 pwd //显示首次登陆默认所处路径 whoami //显示当前正在使用Linux的账户名称 ls //显示当前路径下的文件名称 mkdir //创建一个目…

程序化交易参数优化,小白该用什么软件?

炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…

【初阶数据结构】归并排序 - 分而治之的排序魔法

文章目录 前言1. 什么是归并排序?1.1 归并排序的步骤 2. 归并排序的代码实现2.1 归并排序代码的关键部分讲解2.1.1 利用递归2.1.2 将拆解的数组的元素放到一个临时空间中进行重新排序2.1.3 将在临时空间中排好的数组复制到目标数组中 3. 归并排序的非递归写法 前言 …

mongodb的相关关键字说明

以下是MongoDB中一些数据库相关的关键字说明: 1. 数据库(Database) 概念 数据库是MongoDB中数据存储的最高层级容器,类似于关系型数据库中的数据库概念。一个MongoDB服务器实例可以包含多个数据库,每个数据库可以有自…

companion-关于kotlin中的Static

companion object {const val PARAMETER_ID: Short 506const val NULL_NAME: String ""const val MAP_NAME_LENGTH: Int 21const val SITE_NAME_LENGTH: Int 21} 这段代码定义了一个 companion object,其作用是在 Kotlin 类中创建静态成员&#xff0…