增加深度拷贝,保证在处理用例数据时,不改变原有的数据,方便一次获取用例数据进行多次调用

This commit is contained in:
floraachy
2023-12-06 17:05:24 +08:00
parent 723897c388
commit 192abbc30f
2 changed files with 9 additions and 7 deletions

View File

@@ -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

View File

@@ -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):