requests+unittest接口自动化-数据处理

文件路径:项目目录/common/data_handler.py

EnvData:存放用例中需要使用的数据
clear_EnvData_attrs:清理 EnvData里设置的属性
replace_case_by_regular:替换测试用例中的“##”标记的变量,替换数据在config.ini-[data]中优先查找,再在EnvData中查找,变量名需一致。
excel中需要的变量用#变量名#标记。例"access_token": "#access_token#"

data_handler.py

import re
from common.config_handler import conf
from common.my_logger import logger


class EnvData:
    """
    存储用例要使用到的数据。
    """
    pass

def clear_EnvData_attrs():
    # 清理 EnvData里设置的属性
    values = dict(EnvData.__dict__.items())
    for key, value in values.items():
        if key.startswith("__"):
            pass
        else:
            delattr(EnvData, key)


def replace_case_by_regular(case):
    """
    对excel当中,读取出来的整条测试用例,做全部替换。
    包括url,request_data,expected,check_sql
    """
    for key,value in case.items():
        if value is not None and isinstance(value, str):  # 确保是个字符串
            case[key] = replace_by_regular(value)
    logger.info("正则表达式替换完成之后的请求数据:\n{}".format(case))
    return case

def replace_by_regular(data):
    """
    将字符串当中,匹配#(.*?)#部分,替换换对应的真实数据。
    真实数据只从2个地方去获取:1个是配置文件当中的data区域 。另1个是,EvnData的类属性。
    data: 字符串
    return: 返回的是替换之后的字符串

    ps: 1个是配置文件当中的data区域 。另1个是,EvnData的类属性。必须都是字符串类型。
    """
    res = re.findall("#(.*?)#", data)  # 如果没有找到,返回的是空列表。
    # 标识符对应的值,来自于:1、环境变量  2、配置文件
    if res:
        for item in res:
            # 得到标识符对应的值。
            try:
                value = conf.get("data", item)
            except:
                try:
                    value = getattr(EnvData, item)
                except AttributeError:
                    # value = "#{}#".format(item)
                    continue
            print(value)
            # 再去替换原字符串
            data = data.replace("#{}#".format(item), value)
    return data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值