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

embedded/2024/9/24 3:24:56/

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.ppmy.cn/embedded/112748.html

相关文章

新能源汽车出海中的数据合规热点问题

文章目录 一、数据合规风险(1)个人信息保护的一般性义务(2)车内个人信息回传的特殊性义务(3)自动驾驶功能或涉及测绘、数据安全、国家安全等多部门法律约束一、数据合规风险 汽车企业在研发、生产、销售、售后等多个环节均可能涉及个人信息处理活动。例如在营销活动中收…

Java并发:互斥锁,读写锁,Condition,StampedLock

3,Lock与Condition 3.1,互斥锁 3.1.1,可重入锁 锁的可重入性(Reentrant Locking)是指在同一个线程中,已经获取锁的线程可以再次获取该锁而不会导致死锁。这种特性允许线程在持有锁的情况下,可…

计算机毕业设计 扶贫助农系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

【Elasticsearch】-7.17.24版本接入

官网 https://www.elastic.co/cn/downloads/elasticsearch 本项目基于windows环境下,其他环境操作类似 1、初始化配置 打开config/elasticsearch.yaml 添加如下配置 cluster.name: dams_clusternetwork.host: 127.0.0.1 http.port: 9200# 不开启geo数据库 inge…

CRM如何助力科技服务机构突破业务瓶颈?

在当今知识经济时代,科技服务机构面临着复杂的业务环境和多样化的客户需求。客户管理系统(CRM)在这个领域的应用正逐渐成为机构提升运营效率、优化客户服务的关键。 科技服务行业的业务特点 知识产权代理行业具有高度的专业性和复杂性。其业…

Oracle临时表

Oracle临时表 主要用于存储临时数据,这些表的数据通常只在一个事务或会话期间有效。临时表对于处理大型批处理作业或存储中间结果特别有用,因为它们可以减少重做日志(redolog)的开销,并且不会污染永久表空间。 临时表的类型 1. 会话级临时表…

关键错误 你的开始菜单出现了问题 我们将尝试在你下一次登录时修复它。【笔记】

使用场景设备为Windows11系统,处理提示“关键错误 你的开始菜单出现了问题 我们将尝试在你下一次登录时修复它。”方法之一 处理步骤如下: 1、打开【设置】→【Windows更新】→【高级选项】。 2、切换界面选择【恢复】。 3、选择【使用Windows更新…

【笔记】第一节. 引言

• 轨道用钢的加工过程 • 钢轨结构及其标准 • 轨道结构特点 • 钢轨的商业化及其发展趋势 轨道用钢的加工过程 钢轨形式及其标准 钢轨的基本结构 轨头、轨腰、轨底。 钢轨的技术标准 • 铁道行业标准《TB/T2344-2003:43~75 kg/m 热轧钢轨订货技术…