Python+Pytest框架,“api_key.py文件怎么编写“?

1、在"api_keyword"文件夹下新增"api_key.py"

python 复制代码
import allure
import requests
import json
import jsonpath
from deepdiff import DeepDiff

from config import *

@allure.title("测试用例执行")
class ApiKey:
    @allure.step(">>>:开始发送GET请求")
    def get(self, url, params=None, **kwargs):
        """
        发送get请求
        :param url:接口请求url
        :param params:拼接URL的参数
        :param kwargs:其他的参数
        :return:返回请求后的数据
        """
        return requests.get(url=url, params=params, **kwargs)

    @allure.step(">>>:开始发送POST请求")
    def post(self, url, data=None, json=None, **kwargs):
        """
        发送post请求
        :param url:接口请求url
        :param data:data的请求数据
        :param json:json的请求数据
        :param kwargs:其他的参数
        :return:返回请求后的数据
        """
        res = requests.post(url=url, data=data, json=json, **kwargs)
        print(">>>:响应数据为:", res.json())
        return res

    @allure.step(">>>:开始提取JsonPath数据")
    def get_text(self, response, key):
        """
        提取Json当中的某个值
        :param response:需要提取的json数据,比如{"msg":"登录成功"}
        :param key:对应要提取的jsonpath
        :return:返回提取数据之后的第一个值
        """
        if isinstance(response, str):
            # 是字符串,就让它转一下类型
            response = json.loads(response)

        # print(">>>:开始提取JsonPath数据")
        value_list = jsonpath.jsonpath(response, key)
        print(">>>:提取的数据为:", value_list[0])
        return value_list[0]

    @allure.step(">>>:开始提取数据库数据")
    def get_sqlData(self,sqlValue):
        """
        :param sqlValue: sql,返回的数据是一个元祖
        """
        import pymysql
        # 1.配置数据库连接信息并连接
        connection = pymysql.connect(
            host=DB_HOST,
            port=DB_PORT,
            user=DB_USER,
            password=DB_PASSWORD,
            db=DB_NAME
        )
        # 2.创建游标对象,使用它进行操作
        cursor = connection.cursor()
        # 3.sql语句
        # sqlValue= 'select username from user where id="13";'
        # 4.使用游标对象去执行操作sql
        cursor.execute(sqlValue)
        # 5.得到结果集的下一行
        result = cursor.fetchone()
        print(result)
        # 6.关闭数据库连接
        cursor.close()
        return result[0]

    @allure.step(">>>:响应数据全量对比")
    def jsonDeepDiff(self, json1, json2, **other):
        """
        对比json数据的一致性
        :param json1:期望结果
        :param json2:实际结果
        :param other:你想要写的对应的规则
        :return:
        """
        res = DeepDiff(json1, json2, **other)
        if res == {}:
            return True
        else:
            return False

1、发送GET请求

2、发送POST请求

3、提取JsonPath数据

4、提取数据库数据

5、响应数据全量对比

相关推荐
极梦网络无忧3 小时前
OpenClaw 基础使用说明(中文版)
python
codeJinger3 小时前
【Python】操作Excel文件
python·excel
XLYcmy4 小时前
一个针对医疗RAG系统的数据窃取攻击工具
python·网络安全·ai·llm·agent·rag·ai安全
Islucas4 小时前
Claude code入门保姆级教程
python·bash·claude
萝卜白菜。4 小时前
TongWeb7.0相同的类指明加载顺序
开发语言·python·pycharm
赵钰老师4 小时前
【ADCIRC】基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟实践技术应用
python·信息可视化·数据分析
爬山算法5 小时前
MongoDB(80)如何在MongoDB中使用多文档事务?
数据库·python·mongodb
YuanDaima20485 小时前
基于 LangChain 1.0 的检索增强生成(RAG)实战
人工智能·笔记·python·langchain·个人开发·langgraph
RopenYuan6 小时前
FastAPI -API Router的应用
前端·网络·python