20191011-构建我们公司自己的自动化接口测试框架-Util的TestDataHandler模块
TestDataHandler模块主要是做测试数据的处理,包括转换数据格式和变量参数处理
转换数据格式函数:
data是数据,data以$()的方式识别变量,如果请求的数据有变量,则将变量用global_vars中对应的变量值替换
global_vars是在测试执行的时候存储实时变量的参数,global_vars是一个字典
def data_handler(data,global_vars): """前置数据处理""" # 使用while循环处理请求数据中的参数 while re.search(r"\$\{\w+\}", data): try: var_name = re.search(r"\$\{(\w+)\}",data).group(1) var_value = global_vars[var_name] if isinstance(var_value,list): var_value = var_value[0] # 将data中的变量替换为值 data = re.sub(r"\$\{\w+\}",str(var_value),data,1) except KeyError as e: print(data) error("无对应的参数"+e) except: error(traceback.format_exc()) return data
pre_data_hander方法,主要用于数据处理,因为excel读取的数据都是字符串,需要转换为对应的格式,比如字典,列表,元组等格式,因为授权信息为元组格式,body是json格式,在转换格式之前先进行变量处理,因此会调用data_handler函数处理
def pre_data_hander(test_case,global_vars): """前置数据处理,转换数据格式等""" test_case_serials, method, baseurl, header, auth, body, assert_content, regular_rex,assert_word,test_case_name= test_case try: if header: header = eval(header) if auth: auth = eval(auth) if body: # 处理body中的变量 body = data_handler(body,global_vars) # 转换body格式 body = eval(body) except: error("转换数据格式失败,错误信息如下: \n%s"%traceback.format_exc()) test_case = test_case_serials, method, baseurl, header, auth, body, assert_content, regular_rex,assert_word,test_case_name return test_case