python接口自动化系列(10):保存全局变量

全栈测试笔记 / 2024-03-04 / 原文

 

本系列汇总,请查看这里

实现目标

如果后续有请求依赖本次请求的响应结果,那么把依赖数据保存到全局变量,比如token

 

安装模块

jsonpath用于解析json数据

pip install jsonpath

 

修改工具类

global_variable_tool.py添加方法,用于保存依赖数据

    def setVar(self,key,value):
        '''添加全局变量'''
        self.globalVars[key] = value
        logger.info(f"当前全局变量:{self.globalVars}")


    def save_global_variable(self, globalVariable, res):
        '''保存被依赖数据到全局变量中'''
        import jsonpath
        for globalv in globalVariable.split(";"):
            g = globalv.strip()
            if g:
                key = g.split('=')[0].strip()
                value_expr = g.split('=')[1].strip()
                # print("key:", key)
                # print("value_expr:", value_expr)
                logger.info(f"key={key}, value_expr={value_expr}")
                value = jsonpath.jsonpath(json.loads(res),value_expr)[0]  # 返回列表,取第一个
                self.setVar(key,value)
        # 打印当前所有全局变量
        logger.info("当前所有全局变量:{}".format(self.getVars() ))

 

修改测试类

http请求前定义res

res = None

 

http请求后添加保存全局变量逻辑:

        globalVariables = casedata["globalVariables"]
        # logger.info(">>>>>globalVariables:{}".format(globalVariables))

        # 如果有需要被后续请求用的变量数据
        if globalVariables:
            gv.save_global_variable(globalVariables, res.text)

 

运行结果

先看下测试数据:

  • 登录成功后需要保存token

 

  • 添加商品需要传token 

 

运行结果中可以看到,token保存并替换成功,依赖token的接口请求也成功了