简单接口自动化框架实现(Python+requests+pytest)

1、接口自动化流程

  • 1.需求分析
  • 2.挑选需要做自动化测试的功能
  • 3.设计测试用例
  • 4.搭建自动化测试环境[可选]
  • 5.设计自动化测试项目的架构[可选]
  • 6.编写代码
  • 7.执行测试用例
  • 8.生成测试报告并分析结果

2、框架结构 

--api           -->封装请求

--scripts      -->编写测试脚本

--data          -->存放测试数据

--utils           -->存放工具类

--report        -->测试报告生成目录
app.py         -->存放常量        

--pytest.ini   -->pytest配置文件 

 

测试脚本实现: 

 test_area.py

import requestsfrom api.AreaAPI import AreaAPI
from api.AreaDBAPI import AreaDBAPIclass TestArea:def setup_method(self, method):self.session = requests.Session()self.area_api = AreaAPI(self.session)def teardown_method(self, method):self.session.close()# 测试查询area列表接口def test_list_area(self):response = self.area_api.list_area()print("状态码:",response.status_code)print("响应体:",response.text)# 测试新增area接口def test_add_area(self):data = {"areaName":"12345","priority":"54321"}response = self.area_api.add_area(data=data)print("状态码:",response.status_code)print("响应体:",response.text)# 测试修改area接口def test_modify_area(self):id = AreaDBAPI.select_id_by_name("12345")json = {"areaId":id,"areaName":"1234","priority":"54321"}response = self.area_api.modify_area(json=json)print("状态码:",response.status_code)print("响应体:",response.text)# 测试删除area接口def test_remove_area(self):id = AreaDBAPI.select_id_by_name("1234")params = {"areaId":id}response = self.area_api.remove_area(params=params)print("状态码:",response.status_code)print("响应体:",response.text)

API实现:

AreaAPI.py

import requestsfrom app import AREA_URL, BASE_URLclass AreaAPI:def __init__(self,session):self.session = sessionself.list_area_url = BASE_URL + AREA_URL + "listarea"self.add_area_url = BASE_URL + AREA_URL + "addarea"self.modify_area_url = BASE_URL + AREA_URL + "modifyarea"self.remove_area_url = BASE_URL + AREA_URL + "removearea"# 1、查询areadef list_area(self):response = self.session.get(self.list_area_url)return response# 2、新增areadef add_area(self,data):response = self.session.post(self.add_area_url,data=data)return response# 3、修改areadef modify_area(self,json):response = self.session.put(self.modify_area_url,json=json)return response# 4、删除areadef remove_area(self,params):response = self.session.delete(self.remove_area_url,params=params)return response

app.py

BASE_URL = "http://127.0.0.1:1234/"
AREA_URL = "area/"

 数据库连接工具:

"""
实现封装:将pymysql的常见用法实现封装进一个专门工具类
封装的功能:1、获取连接 2、获取游标 3、释放资源
"""
import pymysqlclass DBUtils:# 工具函数1:获取连接@classmethoddef create_conn(cls):return pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='api_test',charset='utf8')# 工具函数2:获取游标@classmethoddef create_cur(cls,conn):return conn.cursor()# 工具函数3:释放资源@classmethoddef close_res(cls,conn,cur):if cur:cur.close()if conn:conn.close()@classmethoddef conn_commit(cls,conn):conn.commit()

 

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

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

相关文章

pandoc自定义过滤器

pandoc自定义过滤器 pandoc是一个强大的文本转换工具,可以实现各种文本格式的互相转换。 在开发过程中常用的文档格式有rst、markdown、pdf、docx等,pandoc支持这些格式互转,但是对于一些特殊格式和排版支持不是太好,需要做一些…

Python基础(六)——PyEcharts数据可视化初级版

案例 【前言:为了巩固之前的Python基础知识(一)到(五),并为后续使用Python作为数据处理的好帮手,我们一起来看几个例子】 使用工具:Echarts Echarts 是一个由百度开源的数据可视化…

2024年华为杯广东工业大学程序设计竞赛 B.你是银狼(反悔贪心)

题目链接 B 你是银狼 思路: 发现其实只有房间 1 1 1 有的选,房间 2 , 3 2,3 2,3 都没得选,是一定要选的。房间 2 2 2 回血有益还能房间通过数 1 1 1,因此我们肯定会选。而对于一系列房间 1 1 1,在血量允许的前…

[2025]医院健康陪诊系统(源码+定制+服务)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【电路笔记】-运算放大器比较器

运算放大器比较器 文章目录 运算放大器比较器1、概述2、表示2.1 同相比较器2.2 反相比较器3、临界点转换4、施密特触发器4.1 同相触发器4.2 反相触发器4.3 应用5、总结1、概述 在前面的大多数运算放大器文章中,电路都有一个到反相输入的反馈环路。 这种设计是最常见的,因为它…

基于SpringBoot+Vue的企业会议室预定管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

Gin渲染

HTML渲染 【示例1】 首先定义一个存放模板文件的 templates文件夹&#xff0c;然后在其内部按照业务分别定义一个 posts 文件夹和一个 users 文件夹。 posts/index.tmpl {{define "posts/index.tmpl"}} <!DOCTYPE html> <html lang"en">&…

shell指令及笔试题

一&#xff1a;linux基本指令考察 创建文件&#xff0c;直接在本目录的上级目录下创建一个名为dir1的文件夹&#xff0c;并在dir1文件夹下创建一个名为file1的文件 答&#xff1a;本目录的上级目录下创建一个名为dir1的文件:mkdir ../dir1 在dir1文件夹下创建一个名为file1的…

集合是什么

1.是什么 集合&#xff08;Collection&#xff09;是Java语言中一个非常重要的概念&#xff0c;它是一组对象的容器&#xff0c;用于存储、检索和操作对象。在Java中&#xff0c;集合框架定义了一系列接口和实现类&#xff0c;用于处理不同类型的集合。 集合的概念 集合框架提…

TCP/IP - TCP

目录 1. 数据格式2. TCP建立:三次握手第一次握手:Client发出SYN帧(SN=a, AN=0, SYN=1, ACK=0)第二次握手:Server发出SYN+ACK帧(SN=b, AN=a+1, SYN=1, ACK=1)第三次握手:Clietn发出ACK帧(SN=a+1, AN=b+1, SYN=0, ACK=1)为什么是三次握手,而不是两次?建立连接之后,一…

【SQL】百题计划:SQL内置函数“LENGTH“的使用

【SQL】百题计划-20240912 方法一&#xff1a; Select tweet_id from Tweets where LENGTH(content) > 15;– 方法二&#xff1a; Select tweet_id from Tweets where CHAR_LENGTH(content)> 15;

初始c++:入门基础(完结)

打字不易&#xff0c;留个赞再走吧~~~ 目录 一函数重载二引用1 引⽤的概念和定义2引⽤的特性3引⽤的使⽤三inline四nullptr 一函数重载 C⽀持在同⼀作⽤域中出现同名函数&#xff0c;但是要求这些同名函数的形参不同&#xff0c;可以是参数个数不同或者 类型不同。这样C函数调⽤…

HTB-Blue(永恒之蓝漏洞复现)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解Blue靶机 渗透过程 信息搜集 服务器开放了smb服务&#xff0c;漏洞探测显示 具有ms17_010(永恒之蓝漏洞) 利用永恒之蓝 搜索永恒之蓝漏洞 use使用永恒之蓝漏洞 rhost //对方主机 lhost //回连主机 …

一种简单的过某宝验证码的方式(仅做学习使用)

开篇 今天介绍一种简单的过某宝验证码的方式&#xff0c;用的是自动化&#xff0c;这样对不会js逆向的小白非常友好&#xff0c;只需要用到selenium框架就能轻松过某宝验证码&#xff0c;即模拟人的操作对滑块进行滑动。 但是首先还是需要训练验证码和标题 训练前&#xff1a…

Spring Boot,在应用程序启动后执行某些 SQL 语句

在 Spring Boot 中&#xff0c;如果你想在应用程序启动后执行某些 SQL 语句&#xff0c;可以利用 spring.sql.init 属性来配置初始化脚本。这通常用于在应用启动时创建数据库表、索引、视图等&#xff0c;或者填充默认数据。data-locations 和 schema-locations 指定了 SQL 脚本…

心觉:成功学就像一把刀,有什么作用关键在于使用者(二)

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作174/1000天 上一篇文章讲了成功学到底是个啥 是如何起作用的 为什么有些人觉得没有用&#xff1f; 今天我们再展开来剖析一下这…

AI创作新手册:精通Prompt提示词的提问策略

文章目录 &#x1f34a;AI创作核心&#xff1a;提示词 Prompt 的重要性1. 什么是提示词工程&#xff1f;1.1 提示词的作用原理1.2 提示词工程师的薪资与行业前景1.3 提示词工程的适用性 2. 提示词的编写技巧3. 常见的提示词框架3.1 CO-STAR 框架3.2 BORKE 框架 4. 提示词的实际…

openssl 生成多域名 多IP 的数字证书

openssl.cnf 文件内容&#xff1a; [req] default_bits 2048 distinguished_name req_distinguished_name copy_extensions copy req_extensions req_ext x509_extensions v3_req prompt no [req_distinguished_name] countryName CN stateOrProvinceName GuangDong l…

Electron 安装包 asar 解压定位问题实战

背景 在开发 Electron 过程中&#xff0c;我们想知道 Electron 打包的最终形态是什么样的&#xff0c;以便我们能更好的理解 Electron 打包的过程&#xff0c;以及逆向来快速追踪一些问题&#xff0c;例如下面这个报错&#xff0c;以前这类报错都是靠猜&#xff0c;现在则可以…

使用 VSCode 在 Python 中创建项目环境

了解如何管理 Python 项目的不同环境&#xff0c;欢迎来到雲闪世界。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 介绍 创建数据科学项目非常简单。如今&#xff0c;有了众多资源&#xff0c;您只需选择开发工具并启动项目即可。 除了多个人工智能机…