1.顺序调整 2.接口前缀地址带/的处理 3.上传文件方法更新

This commit is contained in:
mojin 2023-03-21 21:32:45 +08:00
parent 00e12a5eb4
commit c5c54f9596
1 changed files with 45 additions and 53 deletions

View File

@ -10,7 +10,6 @@
from requests import Session
import requests
from urllib.parse import urljoin
from common.logger import Logger
from common.exchange_data import ExchangeData
import allure,json,re
@ -24,23 +23,8 @@ class Api_Request():
@classmethod
def api_data(cls,cases,env_url):
url,env=env_url #环境url
ExchangeData.extra_pool.update({
"url":url,
"env": env,
})
allure.dynamic.story(cases[0])
del cases[0]
Condition().skip_if(cases)
allure.dynamic.severity(ReadFile.read_config('$..cor_rel_case_severity')[cases[4]])
request_headers=str(ReadFile.read_config('$.request_headers')) #获取配置文件中的请求头
request_parameters=str(ReadFile.read_config('$.request_parameters')) #获取配置文件中的请求参数
#url="http://192.168.1.10:8888/api/private/v1/"
(
case_mod,
case_id,
case_title,
header_ex,
@ -56,13 +40,32 @@ class Api_Request():
expect,
) = cases
Logger.info(f'用例名称:{case_mod}-{case_id}-{case_title}')
allure.dynamic.story(case_mod)
Condition().skip_if(cases)
url,env=env_url #环境url
ExchangeData.extra_pool.update({
"url":url,
"env": env,
})
allure.dynamic.severity(ReadFile.read_config('$..cor_rel_case_severity')[case_severity])
request_headers=str(ReadFile.read_config('$.request_headers')) #获取配置文件中的请求头
request_parameters=str(ReadFile.read_config('$.request_parameters')) #获取配置文件中的请求参数
# a,b=1,2
case_title=ExchangeData.rep_expr(case_title,return_type='srt')
path=ExchangeData.rep_expr(path,return_type='srt')
header_ex=ExchangeData.rep_expr(header_ex,return_type='dict')
request_headers=ExchangeData.rep_expr(request_headers,return_type='dict')
data=ExchangeData.rep_expr(data,return_type='dict')
file_obj=ExchangeData.rep_expr(file_obj,return_type='srt')
file_obj=ExchangeData.rep_expr(file_obj,return_type='dict')
request_parameters = ExchangeData.rep_expr(request_parameters, return_type='dict')
@ -70,41 +73,27 @@ class Api_Request():
#request_headers.update(header_ex)#配置文件中的请求头和获取excel请求头合并
data.update(request_parameters) #合并配置文件中请求参数
#
if file_obj!="":
#Logger.error(file_obj)
file_name = (file_obj.split('\\')[-1])
Suffix = file_name.split('.')[-1].lower()
if Suffix in ['jpeg', 'jpg', 'png']:
file_type = "image/%s" % Suffix
elif Suffix in ['mp4', ]:
file_type = "video/%s" % Suffix
else:
file_type = "image/%s" % Suffix
from requests_toolbelt import MultipartEncoder
data=MultipartEncoder(
fields={
"file": (file_name,
open("%s/%s"%(images_Path,file_obj), 'rb'),#'./config/1.jpg'
file_type)
}
)
header_ex["Content-Type"] = data.content_type
Logger.info(case_title)
allure.dynamic.title(case_title)
allure.dynamic.description("【用例名称】:%s\n\n【请求地址】:%s%s\n\n【请求参数】:%s"%(case_title,url,path,data))
#allure.dynamic.link('%s%s'%(url,path), name='%s%s'%(url,path)) # 关联的连接
pattern = re.compile(r'^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+')
if (pattern.search(path)) == None: # 判断读取的地址是否有前缀地址http://192.168.1.153:8562
#urls ="%s/%s"%(url,path) # 无前缀读取配置文件添加前缀
urls =urljoin(url, path)
if url[-1] == '/':
url = url[:-1]
urls ="%s/%s"%(url,path) # 无前缀读取配置文件添加前缀
else:
urls = path # 有前缀使用读取的完整地址
allure.dynamic.description("【用例名称】:%s_%s\n\n【请求地址】:%s\n\n【请求参数】:%s"%(case_mod,case_title,urls,data))
res=Api_Request().api_request(urls,method,parametric_key,header_ex,(data),file_obj)
ExchangeData.Extract(res,extra)
@ -121,7 +110,7 @@ class Api_Request():
def api_request(self,url, method, parametric_key, header=None, data=None, file=None) -> dict:
def api_request(self,url, method, parametric_key, header=None, data=None, file_obj=None) -> dict:
if parametric_key=="params":
parametric={"params":data}
elif parametric_key=="data":
@ -131,17 +120,23 @@ class Api_Request():
else:
raise ValueError("“parametric_key”的可选关键字为params, json, data")
if file!="":
data_=str(data)
if file_obj!= {} :
# files = {
# 'avatarfile': open('./config/1.jpg', 'rb'),
# }
file_objs={}
for k,v in file_obj.items():
file_objs[k]=open(v, 'rb')
else:
data_=data
file_objs={}
req_info = {
"请求地址": url,
"请求头": header,
"请求方法": method,
'参数类型':parametric_key,
"请求数据": data_,
"上传文件": str(file),
"请求数据": data,
"上传文件": file_obj,
}
with allure.step('请求数据:'):
allure.attach(
@ -150,18 +145,15 @@ class Api_Request():
allure.attachment_type.JSON,
)
Logger.info('接口地址:%s' % url)
Logger.info('请求头:%s' % header)
Logger.info('请求方法:%s' % method)
Logger.info('参数类型:%s' % parametric_key)
Logger.info('请求参数:%s' % data)
Logger.info('上传文件:%s' % file)
Logger.info('上传文件:%s' % file_obj)
try:
#res = requests.request(method=method, url=url, headers=header,files=file, **parametric)#files=file,
res = requests.request(method=method, url=url, headers=header,timeout=30, **parametric)#files=file,
# res = self.request(method=method, url=url, files=file, headers=header, data=data)
res = requests.request(method=method, url=url, headers=header,timeout=30,files=file_objs, **parametric)#files=file,
response = res.json()