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