优化get-Authorization根据请求类型加密

This commit is contained in:
遥爸 2023-02-15 17:48:45 +08:00
parent 8c01d03c61
commit 99ffba85f0
6 changed files with 68 additions and 31 deletions

View File

@ -10,17 +10,17 @@ user_info_01:
method: POST
detail: 登录接口
headers:
# 这里cookie的值写的是存入缓存的名称
# 这里cookie的值写的是存入缓存的名称
# 请求的数据,是 params 还是 json、或者file、data
requestType: json
# 是否执行,空或者 true 都会执行
is_run:
data:
mobile: '12345678912'
sms: '55555'
openid: 'oKOmX5KQ-DAXRlfIpTl6-iGrM_eE'
distributionUserId: ''
thirdPartySource: 'JEKUNAUTO'
mobile: '12345678912'
sms: '55555'
openid: 'oKOmX5KQ-DAXRlfIpTl6-iGrM_eE'
distributionUserId: ''
thirdPartySource: 'JEKUNAUTO'
dependence_case: False
@ -58,7 +58,7 @@ user_info_02:
Connection: 'keep-alive'
areaCode: '440105'
Entity-Date: ${get_GMT()}
Authorization: ${get_Authorization(v1/users/)}
Authorization: ${get_Authorization(v1/users/,get)}
content-type: 'application/json'
User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1 wechatdevtools/1.06.2208010 MicroMessenger/8.0.5 webview/'
accessKey: ${get_accessKey()}
@ -69,7 +69,7 @@ user_info_02:
Sec-Fetch-Mode: 'cors'
Sec-Fetch-Dest: 'empty'
Cookie: '_csrf-frontend=4a51c35ee2fbcec594206a4a3d3acff5e16f505e6640d083fe573cdb67f8d099a%3A2%3A%7Bi%3A0%3Bs%3A14%3A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%22lOhNgJ_F7YEqCMAZ7poRxVh_c3ALOQTp%22%3B%7D; advanced-frontend=v984ed6kd1cd0ldob9tke47kf3'
# 这里cookie的值写的是存入缓存的名称
# 这里cookie的值写的是存入缓存的名称
# 请求的数据,是 params 还是 json、或者file、data
requestType: params
# 是否执行,空或者 true 都会执行
@ -81,15 +81,15 @@ user_info_02:
dependence_case_data:
- case_id: user_info_01
dependent_data:
- dependent_type: response
jsonpath: $.data[userId]
set_cache: userId
- dependent_type: response
jsonpath: $.data[accessId]
set_cache: accessId
- dependent_type: response
jsonpath: $.data[accessKey]
set_cache: accessKey
- dependent_type: response
jsonpath: $.data[userId]
set_cache: userId
- dependent_type: response
jsonpath: $.data[accessId]
set_cache: accessId
- dependent_type: response
jsonpath: $.data[accessKey]
set_cache: accessKey
assert:
# 断言接口状态码
@ -107,7 +107,7 @@ user_info_order_stauts_01:
Connection: 'keep-alive'
areaCode: '440105'
Entity-Date: ${get_GMT()}
Authorization: ${get_Authorization(v1/order/order/my-order-status-config)}
Authorization: ${get_Authorization(v1/order/order/my-order-status-config,get)}
content-type: 'application/json'
User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1 wechatdevtools/1.06.2208010 MicroMessenger/8.0.5 webview/'
accessKey: ${get_accessKey()}
@ -118,7 +118,7 @@ user_info_order_stauts_01:
Sec-Fetch-Mode: 'cors'
Sec-Fetch-Dest: 'empty'
Cookie: '_csrf-frontend=4a51c35ee2fbcec594206a4a3d3acff5e16f505e6640d083fe573cdb67f8d099a%3A2%3A%7Bi%3A0%3Bs%3A14%3A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%22lOhNgJ_F7YEqCMAZ7poRxVh_c3ALOQTp%22%3B%7D; advanced-frontend=v984ed6kd1cd0ldob9tke47kf3'
# 这里cookie的值写的是存入缓存的名称
# 这里cookie的值写的是存入缓存的名称
# 请求的数据,是 params 还是 json、或者file、data
requestType: params
# 是否执行,空或者 true 都会执行
@ -134,7 +134,7 @@ user_info_order_stauts_01:
- case_id: user_info_01
dependent_data:
- dependent_type: response
jsonpath : $.data[userId]]
jsonpath: $.data[userId]]
replace_key: $.data.id
assert:
@ -143,3 +143,41 @@ user_info_order_stauts_01:
sql:
user_info_car_01:
host: ${{host()}}
url: /v1/cars
method: GET
detail: 用户车俩列表
headers:
Connection: 'keep-alive'
clientSource: '0'
areaCode: '440105'
Entity-Date: ${get_GMT()}
Authorization: ${get_Authorization(/v1/cars,GET)}
content-type: 'application/json'
accessKey: ${get_accessKey()}
Cookie: '_csrf-frontend=eb88b5154efc627dc7b2ad8d9046c40ba0bd409a807f9743089c2af6d75add9da%3A2%3A%7Bi%3A0%3Bs%3A14%3A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%22NJLa42Exc9vVQSnMCpEHWcXOvk2DmalJ%22%3B%7D; advanced-frontend=9cho9he6uul8c93epuntgi9tlg'
# 这里cookie的值写的是存入缓存的名称
# 请求的数据,是 params 还是 json、或者file、data
requestType: params
# 是否执行,空或者 true 都会执行
is_run:
data:
fields: "modelPicUrl,carLicense,carModelLabel,id,isDefault,isCertified,isNewEnergy,licenseProvince,licenseLetter,licenseNumber,jekunModelCode,seriesId,seriesName,modelId,modelName,brandId,brandName,brandLogoUrl,carImageUrl"
thirdPartySource: JEKUNAUTO
query: "%257B%2522perPage%2522%253A1000%252C%2522page%2522%253A1%252C%2522sort%2522%253A%2522-isDefault%252C-isCertified%252C-id%2522%257D"
clientSource: "0"
dependence_case: False
# 依赖的数据
dependence_case_data:
- case_id:
dependent_data:
- dependent_type:
jsonpath:
replace_key:
assert:
# 断言接口状态码
status_code: 200
sql:

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023-02-14 17:16:25
# @Time : 2023-02-15 17:45:07
import allure

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023-02-14 17:16:25
# @Time : 2023-02-15 17:45:07
import allure
@ -12,7 +12,7 @@ from utils.read_files_tools.regular_control import regular
from utils.requests_tool.teardown_control import TearDownHandler
case_id = ['user_info_01', 'user_info_02', 'user_info_order_stauts_01']
case_id = ['user_info_01', 'user_info_02', 'user_info_order_stauts_01', 'user_info_car_01']
TestData = GetTestCase.case_data(case_id)
re_data = regular(str(TestData))
@ -21,7 +21,7 @@ re_data = regular(str(TestData))
@allure.feature("登录模块")
class TestUserInfo:
@allure.story("用户信息接口")
@allure.story("用户信息")
@pytest.mark.parametrize('in_data', eval(re_data), ids=[i['detail'] for i in TestData])
def test_user_info(self, in_data, case_skip):
"""

View File

@ -20,6 +20,7 @@ from utils.logging_tool.log_control import ERROR
from utils.times_tool.time_control import get_GMT
class Context:
""" 正则替换 """
# 主要用来创建伪数据使用Faker包无需再手动生成或者手写随机数来生成数据
@ -29,10 +30,11 @@ class Context:
@classmethod
def get_GMT(cls):
gmt_format = '%a, %d %b %Y %H:%M:%S GMT'
return datetime.utcnow().strftime(gmt_format)
time = datetime.utcnow().strftime(gmt_format)
return time
#todo 设计登录Authorization\
#todo 还需判断method类型进行加密 \
@classmethod
def get_Authorization(cls, *args):
"""
@ -40,7 +42,7 @@ class Context:
"""
from test_case.conftest import login_aceess
# login_aceess()
url =args[0]
url, method = args
userId = CacheHandler.get_cache('userId')
userId = str(userId)
accessId = CacheHandler.get_cache('accessId')
@ -50,7 +52,7 @@ class Context:
# url = re.search('v.*', url).group()+userId
if url == "v1/users/":
url = url + userId
string= 'GET' + '\\n' + url + '\\n' + '0' + '\\n' + clientTime
string= method.upper() + '\\n' + url + '\\n' + '0' + '\\n' + clientTime
# 哈希加密处理
message = string.encode()
key = accessKey.encode()

View File

@ -185,7 +185,6 @@ class DependentCase:
re_data = ast.literal_eval(cache_regular(str(re_data)))
# 调用依赖请求
res = RequestControl(re_data).http_request()
ERROR.logger.error("依赖后调用{}".format(res.response_data))
if dependence_case_data.dependent_data is not None:
dependent_data = dependence_case_data.dependent_data
for i in dependent_data:

View File

@ -416,7 +416,6 @@ class RequestControl:
# 处理多业务逻辑
if dependent_switch is True:
DependentCase(self.__yaml_case).get_dependent_data()
# self.init1()
res = requests_type_mapping.get(self.__yaml_case.requestType)(
headers=self.__yaml_case.headers,
method=self.__yaml_case.method,
@ -445,6 +444,5 @@ class RequestControl:
request_data=self.__yaml_case.data,
response_data=res
).set_caches_main()
ERROR.logger.error("依赖前{}".format(_res_data.response_data))
return _res_data