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

相关推荐
hboot3 小时前
AI工程师第二课 - 数据处理
人工智能·python·数据分析
用户8356290780518 小时前
使用 Python 自动化 PowerPoint 形状布局与格式设置
后端·python
用户83562907805110 小时前
用 Python 自动化 PowerPoint 演讲者备注添加
后端·python
黄忠15 小时前
01-系统架构设计-LangGraph状态机与多源异构RAG
python
zzzzzz31015 小时前
假如我是掘金管理员,我先给评论区装个'代码审查'系统
python·程序员·机器人
砍材农夫16 小时前
python环境|conda安装和使用(2)
后端·python
程序员龙叔1 天前
编写高质量 Skill 系列 -- 如何设计需求分析与用例生成的 SKILL
自动化测试·软件测试·python·软件测试工程师·接口测试·性能测试·skill·ai测试
用户8356290780511 天前
使用 Python 操作 Word 内容控件
后端·python
码云骑士1 天前
32-慢查询排查全流程(下)-索引优化实战与最左前缀原则
python