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

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

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

import allure
import requests
import json
import jsonpath
from deepdiff import DeepDifffrom 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.使用游标对象去执行操作sqlcursor.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 Trueelse:return False

1、发送GET请求

2、发送POST请求

3、提取JsonPath数据

4、提取数据库数据

5、响应数据全量对比

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ubuntu下beanstalkd无法绑定局域网IP地址以及消息队列beanstalkd上的error: JOB_TOO_BIG的解决
  • ZYNQ LWIP(RAW API) TCP函数学习
  • 每日OJ_牛客_点击消除(栈)
  • 反激电路中TL431光耦反馈参数的计算,环路设计思路
  • Stream流的思想和获取Stream流
  • 极越造车2.0:01销量回暖,07杀出血路,ASD抢跑FSD
  • 实战外网配置——光猫桥接+路由器PPPoE拨号+防火墙外网链路健康检查+外网流量负载均衡
  • 【Go】-基于Gin和GORM的小清单项目
  • PPStructure核心源码研究(三)LayoutPredictor类详解
  • 昇思MindSpore AI框架MindFormers实践3:ChatGLM3-6B对一段文字进行提取
  • Qt 边框border - qss样式
  • 如何从github上clone项目
  • 品牌借势华为三折叠手机上市热点文案
  • 基于Java+Mysql实现(web)大型企业管理系统
  • 大数据Flink(一百一十八):SQL水印操作(Watermark)
  • 03Go 类型总结
  • extract-text-webpack-plugin用法
  • GraphQL学习过程应该是这样的
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • MySQL的数据类型
  • Nacos系列:Nacos的Java SDK使用
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SpringBoot几种定时任务的实现方式
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • spring学习第二天
  • SQLServer之创建数据库快照
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • XML已死 ?
  • 机器学习中为什么要做归一化normalization
  • 目录与文件属性:编写ls
  • 前端临床手札——文件上传
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 我这样减少了26.5M Java内存!
  • 新书推荐|Windows黑客编程技术详解
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • const的用法,特别是用在函数前面与后面的区别
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • # 计算机视觉入门
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • (52)只出现一次的数字III
  • (C++17) std算法之执行策略 execution
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计高校学生选课系统
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)