花了两天研究的测试用例的字符串提取方式,直接拿走

我们前面跟大家分享了接口之间的数据依赖关系,解决接口之间的关系依赖方式是:

第一步:先通过jsonpath 去提取值,第二步我们接着再替换值

那么我们这个值是怎么进行替换的呢?

——直接从我们建立的Data 类(我们建立的my_data全局变量文件)当中取属性值为替换

 

还有:

1、在一条测试用例当中,你是怎么知道哪些值需要替换,哪些不需要呢?

——解决方法:打标记 #全局变量名#。

 

2、一条测试用例数据中,url 、data 、assert 要替换的话,你是怎么识别到有多少字段需要替换呢?你是怎么处理的?

——解决方法:一条用例当中,从excel 当中读取出来是一个字典,把字典转换成字符串,统一从字符串找所有的标识符。

 

3、一条测试用例数据当中,要替换多个不同的数据,你是怎么处理的?也就说,怎么样能把所有的mark 一次性找出来

——解决方法:不同的mark ,通过正则表达式,全部都找到了并且放在了列表当中。遍历标记符mark 列表,如果mark 是全局

变量的属性名,那么就将mark 替换为真实的值。

 

4、你是如何将用例中要替换的标识,与Data 全局变量关联起来的?

——解决方法:标识符# ,要与Data 类属性名匹配。

示例代码如下:

 

 

"""
 框架当中,提取标识符(mark)的正则表达式:
res = re.findall("#(\w+)#",ss2)
print(res)
res的结果:是一个列表。如果列表不为空,表示提取到了标识符(mark)
"""

import re
from common.my_data import Data

# 第一步:准备一条测试数据
case = {
    "url":"member/login",
    "method":"post",
    "req_data": '{"mobile_phone":#user#,"pwd":#passwd#}',
    "extract": '{"token":"$..token","member_id":"$..id","leave_amount":"$..leave_amount"}'
}

# 第二步,把excel当中的一整个测试用例(excel当中的一行)转换成字符串
case_str = str(case)
print(case_str)

# 第三步,利用正则表达式提取mark标识符
res = re.findall("#(\w+)#",case_str)
print(res)

# 第四步:遍历标识符mark,如果标识符是全局变量Data类的属性名,则用属性值替换掉mark
if res:
    for mark in res:
        # 如果全局变量Data类有mark这个属性名
       if hasattr(Data, mark):
           # 使用全局变量Data类的mark属性值,去替换测试用例当中的#mark#
           case_str = case_str.replace(f"#{mark}#", getattr(Data,mark))

print(case_str)
# 第五步:将完全替换后的一整个测试用例,转换回字典
case_dict = eval(case_str)
print(case_dict)

 

posted @ 2022-01-11 19:51  乘风破浪的小落夜  阅读(115)  评论(0编辑  收藏  举报