接口自动化-接口提取及参数传递

文章介绍了如何使用Python的openpyxl库读取Excel测试用例,结合jsonpath进行数据提取,并通过正则表达式进行标识符替换,以支持自动化测试中的参数传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:提取

读取测试用例

测试用例excel如图:

读取excel代码如下:

from openpyxl import load_workbook
from jsonpath import jsonpath
import os

def read_excel(file_path, sheet):
    """
    读取测试用例文件
    :param file_path: 用例文件的路径
    :param sheet_name: sheet的名称
    :return: all_data 返回元素为字典格式的列表
    """
    table = load_workbook(file_path)
    sh = table[sheet]
    data = sh.values
    # 用于存放一个sheet页下多条测试用例
    all_data = []
    keys = data[0]
    for row in data(1:):
        str_dict = dict(zip(keys, row))
        all_data.append(str_dict)
    return all_data


def parameter_extraction(response):
    """
    从响应结果中提取
    注:实际自动化中可能需要将extract_epr也做参数传入,当前为了更直观直接调用了读取excel
    :param response:响应结果
    :return: 无
    """
    extract_epr = read_excel(file_path, sheet)[0]['extract']
    extract_epr = eval(extract_epr)
    for key, value in extract_epr.items():
        res = jsonpath(response, value)
        print(res)
        if res:
            setattr(Data, key, res[0])
    
新建一个Data类,无任何属性用于动态存储属性值
class Data:
    pass

二:替换

下一个接口需要使用的参数

替换代码如下:

import re

def replace_case_request_param(case_dict, class_global:Data):
    """
    主要功能:用于替换用例中所有标识符,通过正则表达式获取所有的mark表达式
    :param class_global:类属性 见上边代码
    :param case_dict:读取的测试用例
    :return:返回替换后的测试数据,类型为字典
    """
    case_str = str(case_dict)
    # 使用正则表达式提取用例的标记需要替换的值
    replace_data = re.findall('#(.+?)#', case_str)
    if replace_data:
        for mark in replace_data:
            if hasattr(class_global, mark):
                # 取出
                case_str = case_str.replace('#{}#'.format(mark), getattr(class_global, mark))
    case_dict = eval(case_str)
    return case_dict
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值