增加深度拷贝,保证在处理用例数据时,不改变原有的数据,方便一次获取用例数据进行多次调用
This commit is contained in:
@@ -6,10 +6,10 @@
|
||||
# @Desc:
|
||||
|
||||
# 标准库导入
|
||||
import random
|
||||
import random # 导包不能移除,否则random.choice这种就不能处理了
|
||||
import json
|
||||
import re, uuid
|
||||
from datetime import datetime, date, timedelta
|
||||
import copy
|
||||
# 第三方库导入
|
||||
from loguru import logger
|
||||
from string import Template
|
||||
@@ -75,7 +75,7 @@ class DataHandle:
|
||||
return replaced_text, result
|
||||
|
||||
def data_handle(self, obj, source=None):
|
||||
obj = eval_data(obj)
|
||||
obj = copy.deepcopy(eval_data(obj))
|
||||
return self.data_handle_(obj, source)
|
||||
|
||||
def data_handle_(self, obj, source=None):
|
||||
@@ -157,7 +157,6 @@ class DataHandle:
|
||||
if func_name in self.method_list: # 证明是FakerData类方法
|
||||
method = getattr(self.FakerDataClass, func_name)
|
||||
res = eval(f"method({func_args_str})") # 尝试直接调用
|
||||
logger.debug(f"==========res type: {type(res)}, obj: {obj}, key:{key}")
|
||||
obj = self.deal_func_res(obj, key, res)
|
||||
else: # 不是FakerData类方法,但有可能是 1+1 这样的
|
||||
obj = self.deal_func_res(obj, key, eval(func))
|
||||
@@ -173,8 +172,10 @@ class DataHandle:
|
||||
if not isinstance(res, str):
|
||||
obj = eval(obj)
|
||||
except:
|
||||
msg = f"表达式:{obj},结果值:{res},结果类型:{type(res)}"
|
||||
logger.warning("Warn: --------无法根据函数返回值eval,可能原始的字符串并不是python表达式-------,%s" % msg)
|
||||
msg = (f"\nobj --> {obj}\n"
|
||||
f"函数返回值 --> {res}\n"
|
||||
f"函数返回值类型 --> {type(res)}\n")
|
||||
logger.warning(f"\nWarn: --------处理函数方法后,尝试eval({obj})失败,可能原始的字符串并不是python表达式-------{msg}")
|
||||
return obj
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
import json
|
||||
import os
|
||||
import http.cookiejar
|
||||
import copy
|
||||
# 第三方库导入
|
||||
from requests import Response
|
||||
from loguru import logger
|
||||
@@ -45,7 +46,7 @@ class RequestPreDataHandle:
|
||||
f"响应断言(assert_response): {type(request_data.get('assert_response', None))} || {request_data.get('assert_response', None)}\n" \
|
||||
f"数据库断言(assert_sql): {type(request_data.get('assert_sql', None))} || {request_data.get('assert_sql', None)}\n" \
|
||||
"=====================================================")
|
||||
self.request_data = request_data
|
||||
self.request_data = copy.deepcopy(request_data)
|
||||
self.global_var = global_var
|
||||
|
||||
def request_data_handle(self):
|
||||
|
||||
Reference in New Issue
Block a user