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