当前位置: 首页 > article >正文

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

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

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


http://www.kler.cn/a/309513.html

相关文章:

  • 从0开始学PHP面向对象内容之(常用魔术方法续一)
  • Vue中优雅的使用Echarts的三种方式
  • go T 泛型
  • Linux——基础指令2 + 权限
  • LLM时代下Embedding模型如何重塑检索、增强生成
  • 速盾:cdn和反向代理的关系是什么?
  • 【乐企-业务篇】生成发票左上角二维码
  • Linux和C语言(Day 12)
  • 华南医电科技集团受邀出席中马建交50周年高级别经贸合作交流活动
  • [Redis] Redis中的set和zset类型
  • 云轴科技ZStack 获鲲鹏应用创新大赛2024上海赛区决赛一等奖
  • vue3-print打印eletable某一行的数据
  • TI AM62X Secure Boot 流程简述
  • (黑马点评)六、好友关注系列功能实现
  • C语言 | Leetcode C语言接雨水II
  • vscode中前端项目文件格式化备份
  • Apple M3编译OpenSSL安卓平台SO库
  • django orm查询优化
  • Unity常用随机数算法
  • linux-Shell 编程-常用 Shell 脚本技巧
  • Python--数据格式转换
  • 在react中 使用redux
  • ubuntu安装wordpress(基于LNMP环境)
  • GBase8c主备版500升级步骤
  • 演示:基于WPF自绘的中国省份、城市、区县矢量地图
  • android 识别设备是否为模拟器