简单接口自动化框架实现(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()
相关推荐
kuroomi4 小时前
Docker 与容器基础
linux·运维·docker
_itgo10 小时前
意图识别落地方案
运维·docker·容器
mengge.cloud10 小时前
0909华为云计算类综合服务小白实验教程
linux·运维·服务器·网络·华为云·云计算
QYR-分析12 小时前
蓝海赛道高速扩容!全球小型观察ROV市场格局、细分场景与发展趋势分析
大数据·运维·云计算
陈皮糖..12 小时前
从零搭建一个简易 AI 运维问答机器人(RAG + LangChain + Streamlit)
运维·人工智能·ai·langchain·机器人
制造业的搬运工13 小时前
AI服务器背板与传统背板差异:三大设计升级解析
运维·服务器·人工智能·科技·制造·pcb工艺
顶点多余13 小时前
仿muduo库实现高并发服务器项目
运维·服务器
脚踏实地,坚持不懈!13 小时前
Linux 6.18.7 内存分配与回收 —— 代码梳理
linux·运维·网络
2601_9623004714 小时前
python在运维上可以干什么,请举几个具体的例子
运维·python·系统管理·网络监控·自动化脚本
Android系统攻城狮15 小时前
Linux Gstreamer深度解析之gst_audio_format_build_integer调用流程与实战(十二)
linux·运维·服务器·音视频·车载音视频·gstreamer进阶