接口测试数据关联

一、接口自动化的时候,下一个接口的入参是需从上一个接口的参数得出,两个接口的参数需关联;如下:
1、第一个接口的参数:replace = {"token":"12344","uuid":"1yuwngwbc"}
2、第二接口的参数:tokens = {'reques':'1111','tok':'${token}$'}#:'${token}$'}
3、第二接口参数中的tok字段值需要从第一个接口获取值,可先用这中格式编写"${token}$",里面的token是需从上一个接口字段获取值的字段名
那么下面是使用正则匹配获取得到值

1、匹配获取第二接口${token}$,里面的token

#匹配获取第二接口${token}$,里面的token
def res_find(data,pattern=p_data):
    """
    参数关联查询
    :param data: 匹配的str
    :param pattern: 正则
    :return:
    """
    pattern_data = re.compile(pattern)
    re_res = pattern_data.findall(data)
    return re_res

2、参数关联的替换,使用sub方法;从第一个接口获取的token字段的值当作替换值

def res_sub(data,replace,pattern=p_data):
    """
    参数关联的替换
    :param data: 数据str
    :param replace: 替换的值
    :param pattern: 正则匹配
    :return:
    """
    pattern_data = re.compile(pattern)
    re_res = pattern_data.findall(data)
    if re_res:
        return re.sub(pattern,replace,data)
    return re_res

3、因为findall(data)方法,data不能是dict类型,需要使用data = json.dumps(data)转换成字符串,不然会报如下错误:

TypeError: expected string or bytes-like object

4、结果运行


if __name__ =='__main__':
    tokens = {'reques':'1111','tok':'${token}$'}#:'${token}$'}
    #dict ——》str
    tokens = json.dumps(tokens)
    replace = {"token":"12344","uuid":"1yuwngwbc"}
    field = res_find(tokens)[0]
    print(field) #token
    tokens=res_sub(tokens,replace[field])
    print(tokens) #{"reques": "1111", "tok": "12344"}
原文地址:https://www.cnblogs.com/venvive/p/12927002.html