Python自动化测试中JSON数据处理遇到的错误

在接口自动化测试领域,使用Excel管理测试数据是一种常见的做法。本文将分享一个实际案例,介绍在Python自动化测试框架中,如何从响应结果中提取所需数据,并探讨在处理JSON格式数据时遇到的一个典型问题及其解决方案。

首先,让我们了解测试数据的基本格式。在Excel中,我们定义了一个名为extract_data的字段,用于指定要从响应中提取哪些数据。例如,我们可能需要从响应中提取一个名为token的字段。

image

为了实现这一功能,我编写了一个名为HandleExtractData的Python类。该类包含一个extract_data方法,接收响应结果(一个字典)和待提取数据的规则(一个字符串)。下面是代码的核心部分:

class HandleExtractData:
    def __init__(self):
        pass
    def extract_data(self, response: dict, extract_data: str):
        if extract_data:
            extract_data = extract_data if isinstance(extract_data, dict) else json.loads(extract_data)
            for key, val in extract_data.items():
                value = jsonpath(response, val)[0]
                setattr(HandleAttr, key, value)
        else:
            print("Excel中该字段为空,无需提取数据")

处理逻辑如下:

  1. 检查extract_data是否为空。如果不为空,继续下一步;否则,输出提示信息。

  2. 如果extract_data是字符串格式,使用json.loads()将其转换为字典。

  3. 遍历extract_data中的每个键值对,使用jsonpath库从响应结果中提取对应的值。

  4. 将提取到的值设置为全局变量,以便在后续接口中使用。

然而,在最初编写测试用例时,我犯了一个小错误:在extract_dataJSON字符串中使用了单引号,而不是标准JSON格式所要求的双引号。这导致运行时出现了以下错误:

Python/Json:Expecting property name enclosed in double quotes

经过一番排查,我最终发现了问题所在,并进行了修正。将单引号替换为双引号后,代码成功运行。

image

通过这个案例,我们可以看到,在处理JSON数据时,严格遵守格式规范是非常重要的。同时,我们也可以利用Python的强大库来实现灵活的数据提取和处理。希望这个案例能对你有所帮助。

posted @   爱老的虎油  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示