简单接口自动化框架实现(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

python 复制代码
import requests

from api.AreaAPI import AreaAPI
from api.AreaDBAPI import AreaDBAPI


class 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

python 复制代码
import requests

from app import AREA_URL, BASE_URL


class AreaAPI:

    def __init__(self,session):
        self.session = session
        self.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、查询area
    def list_area(self):
        response = self.session.get(self.list_area_url)
        return response
    # 2、新增area
    def add_area(self,data):
        response = self.session.post(self.add_area_url,data=data)
        return response
    # 3、修改area
    def modify_area(self,json):
        response = self.session.put(self.modify_area_url,json=json)
        return response
    # 4、删除area
    def remove_area(self,params):
        response = self.session.delete(self.remove_area_url,params=params)
        return response

app.py

python 复制代码
BASE_URL = "http://127.0.0.1:1234/"
AREA_URL = "area/"

数据库连接工具:

python 复制代码
"""
实现封装:将pymysql的常见用法实现封装进一个专门工具类
封装的功能:1、获取连接 2、获取游标 3、释放资源
"""
import pymysql

class DBUtils:
    # 工具函数1:获取连接
    @classmethod
    def create_conn(cls):
        return pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='api_test',charset='utf8')

    # 工具函数2:获取游标
    @classmethod
    def create_cur(cls,conn):
        return conn.cursor()

    # 工具函数3:释放资源
    @classmethod
    def close_res(cls,conn,cur):
        if cur:
            cur.close()
        if conn:
            conn.close()

    @classmethod
    def conn_commit(cls,conn):
        conn.commit()
相关推荐
Apipi*3 分钟前
30天速通Linux 第五章Linux 进程管理
linux·运维·服务器
杨云龙UP6 分钟前
PostgreSQL 四种常见部署模式快速理解:单实例、流复制、repmgr、Patroni
linux·运维·数据库·postgresql·流复制·高可用ha
白帽攻防录7 分钟前
SRC 挖洞:TanStack Start 服务器函数 XSS 深度复盘,CVE-2026-102989 怎么窃取用户会话
运维·服务器·网络安全·xss
做个有深度的老李8 分钟前
协作机器人选型方法论|基于企业组织形态与生产模式的选型框架
大数据·机器人·自动化·柔性机器人
资深电气设计22 分钟前
ABB AFC/AF/AX系列接触器在数据中心液冷机组中的负载适配技术
运维·物联网·创业创新·业界资讯
.冰块.30 分钟前
MySQL下篇 运维实战:备份恢复 + 主从复制 + MHA 高可用,含完整拓扑
运维·mysql·读写分离·高可用·主从复制·mha
智商网输送线配件1 小时前
非标自动化零部件采购避坑指南:从零散补货到一站式协同的实战路径
运维·自动化
东鹏特饮1 小时前
15个实用Linux运维脚本
linux·运维·shell·脚本·redhat·常用生产脚本
承渊政道1 小时前
自建服务越来越多怎么管理?Docker部署Flare,搭一个自己的数字入口
运维·docker·容器·内网穿透·cpolar·nas·flare
海宇数据1 小时前
零信任架构实战:基于海宇车辆vin码查车辆信息详版构建自动化车险承保定级网关
人工智能·架构·自动化·php