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

相关推荐
一个天蝎座 白勺 程序猿4 小时前
Python爬虫(47)Python异步爬虫与K8S弹性伸缩:构建百万级并发数据采集引擎
爬虫·python·kubernetes
XiaoMu_0016 小时前
基于Django+Vue3+YOLO的智能气象检测系统
python·yolo·django
honder试试7 小时前
焊接自动化测试平台图像处理分析-模型训练推理
开发语言·python
心本无晴.7 小时前
Python进程,线程
python·进程
java1234_小锋9 小时前
Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 主成分分析 (PCA)
python·机器学习·scikit-learn
java1234_小锋10 小时前
Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 线性判别分析 (LDA)
python·机器学习·scikit-learn
思辨共悟10 小时前
Python的价值:突出在数据分析与挖掘
python·数据分析
计算机毕业设计木哥11 小时前
计算机毕设选题:基于Python+Django的B站数据分析系统的设计与实现【源码+文档+调试】
java·开发语言·后端·python·spark·django·课程设计
中等生11 小时前
Pandas 与 NumPy:数据分析中的黄金搭档
后端·python
用户83562907805112 小时前
Python查找替换PDF文字:告别手动,拥抱自动化
后端·python