美文网首页
零基础小白(十二) Excel参数化实战替换

零基础小白(十二) Excel参数化实战替换

作者: 巴鶴 | 来源:发表于2021-02-19 18:54 被阅读0次

零基础小白 接口自动化测试集锦: https://www.jianshu.com/nb/49125734

引言

上篇文章https://www.jianshu.com/p/7a18f530b5b0 分享了执行前置条件测试用例方法,本篇继续探讨当前用例token实时动态替换为参数传入。

思路分析

  • 替换传参变量--验证请求中是否含有下图标识符,返回下图标识符内容


    标识符.jpg
  • 根据内容token,查询前置条件测试用例返回结果token = 值
  • 根据变量结果内容,替换

通过思路分析发现引用了正则表达式,通过举例学习正则表达式

正则表达式--样例

#1.验证请求中是否${}$,返回${}$内容
import re
str1 = '{"deviceType": "2","requestToken":"${requestToken}$"}'
if '${' in str1:
    print(str1)
pattern = re.compile('\${(.*)}\$')
re_res = pattern.findall(str1)
print(re_res)
print(re_res[0])
#2.根据内容token,查询前置条件测试用例返回结果token = 值
requestToken = 'I5NTkxNWIzYi1iZWZkLTM1ZWQtYWZiNi0yM2Q3MDkyZDBiODIiLCJhcHBJZCI6ODAwMDUsImNoYW5uZWwiOjIwM'
#3.根据变量结果内容,替换
res = re.sub(pattern,requestToken,str1)
print(res)

通过实例总结思路

  • 1、公共方法--查询和替换
  • 2、公共方法--验证请求中是否{},返回{}内容
    标识符.jpg
  • 3、关联方法

代码设计

Base.py公共脚本-新增正则查询

def res_find(data,pattern_data = p_data):
    """
    前置条件--正则查询
    :param data:
    :param pattern_data:
    :return:
    """
    # pattern = re.compile('\${(.*)}\$')
    pattern = re.compile(pattern_data)
    re_res = pattern.findall(data)
    return re_res

if __name__ == "__main__":
    print(res_find('{"deviceType": "2","requestToken":"${requestToken}$"}')[0])
正则查询结果.jpg

Base.py公共脚本-新增正则替换

def res_sub(data,replace,pattern_data = p_data):
    """
    前置条件--正则替换
    :param data: 参数化值在所需查询范围内的值
    :param replace: 前置条件接收的值用来替换
    :param pattern_data: 默认p_data固定值
    :return:
    """
    pattern = re.compile(pattern_data)
    re_res = pattern.findall(data)
    if re_res: #判断是否查询到前置条件值
       return re.sub(pattern_data,replace,data)
    return re_res

if __name__ == "__main__":
    print(res_find('{"deviceType": "2","requestToken":"${requestToken}$"}')[0])
    print(res_sub('"deviceType": "2","requestToken":"${requestToken}$"}',"I5NTkxNWIzYTM1ZiNi0yM2"))
正则替换结果.jpg

Base.py公共脚本-新增结果关联

#验证请求中是否有依赖结果的
def params_find(headers,cookies,params):
    """
    验证请求中是否有${}$需要结果关联
    :param headers: 游戏Api使用accessToken"
    :param cookies:
    :param params: SDK Api使用到参数化
    :return:
    """
    if '${' in headers:
        headers = res_find(headers)
    if '${' in cookies:
        headers = res_find(cookies)
    if '${' in params:
        headers = res_find(params)
    return headers,cookies,params

test_excel_case.py新增关联方法


    def get_correlation(self,headers,cookies,params,pre_res):

        """
        关联
        :param headers:
        :param cookies:
        :param pre_res:
        :return:
            """
        # 验证是否有关联
        headers_para, cookies_para, params_para = Base.params_find(headers, cookies, params)
        # # print(headers_para)
        # 有关联,执行前置用例,获取结果
        if len(headers_para):
            headers_data = pre_res["data"][headers_para[0]]
            # 结果替换
        headers = Base.res_sub(headers, headers_data)


        # 有关联,执行前置用例,获取结果
        if len(params_para):
            params_data = pre_res["data"][params_para[0]]
            # 结果替换
        params = Base.res_sub(params, params_data)

        # 有关联,执行前置用例,获取结果
        if len(cookies_para):
            cookies_data = pre_res["data"][cookies_para[0]]
            # 结果替换
        cookies = Base.res_sub(cookies, cookies_data)
        return headers, cookies, params
运行成功.jpg

相关文章

网友评论

      本文标题:零基础小白(十二) Excel参数化实战替换

      本文链接:https://www.haomeiwen.com/subject/yjaoxltx.html