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、响应数据全量对比

相关推荐
huanxiangcoco2 分钟前
73. 矩阵置零
python·leetcode·矩阵
一晌小贪欢21 分钟前
Python基础知识——字典排序(不断补充)
python·json·python基础·字典·字典排序·python学习
YOLO数据集工作室31 分钟前
Python介绍
开发语言·python
Hiweir ·1 小时前
机器翻译之创建Seq2Seq的编码器、解码器
人工智能·pytorch·python·rnn·深度学习·算法·lstm
不染_是非2 小时前
Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
后端·python·学习·django
star数模2 小时前
2024“华为杯”中国研究生数学建模竞赛(E题)深度剖析_数学建模完整过程+详细思路+代码全解析
python·算法·数学建模
跟着大数据和AI去旅行2 小时前
使用肘部法则确定K-Means中的k值
python·机器学习·kmeans
WinterXJujube2 小时前
人话学Python-循环语句
python
kuiini3 小时前
python学习-10【模块】
python·学习