1.顺序调整 2.接口前缀地址带/的处理 3.上传文件方法更新
This commit is contained in:
parent
00e12a5eb4
commit
c5c54f9596
|
@ -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()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue