首页 > 编程语言 >Python自动化测试中JSON数据处理遇到的错误

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

时间:2024-05-04 17:12:00浏览次数:16  
标签:提取 Python data JSON 数据处理 格式 extract

在接口自动化测试领域,使用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的强大库来实现灵活的数据提取和处理。希望这个案例能对你有所帮助。

标签:提取,Python,data,JSON,数据处理,格式,extract
From: https://www.cnblogs.com/sjxforfree/p/18172469

相关文章

  • Windows系统,在Pycharm里面(python3.9)下载dlib的依赖包的具体步骤
    原文作者:传送门1、进入网址轮子地址然后选择这个下载:2、保存到自己的项目里面,然后使用pip的命令下载pip命令如下:pipinstalldlib-19.23.0-cp39-cp39-win_amd64.whl使用piplist的命令查看已经下载的包:dlib依赖包下载完成!......
  • Python进阶篇笔记
    一、面向对象1、面向过程与面向对象面向过程:把程序流程化面向对象:把程序抽象成类,类与类之间有联系2、类与对象对象就是容器,是用来存放数据和功能的,对象就是数据和功能的集合类的作用是吧对象做区分和归类,以及解决不同对象存相同数据的问题。类也是容器,也是用来存放数据和......
  • Python-Web-渗透测试秘籍(全)
    PythonWeb渗透测试秘籍(全)原文:annas-archive.org/md5/9ECC87991CE5C1AD546C7BAEC6960102译者:飞龙协议:CCBY-NC-SA4.0前言欢迎阅读我们的Python和Web应用测试书。渗透测试是一个庞大的领域,而Python的领域更加广阔。我们希望我们的小书可以帮助您更好地管理这些庞大......
  • Python-渗透测试秘籍(全)
    Python渗透测试秘籍(全)原文:annas-archive.org/md5/A471ED08BCFF5C02AB69EE891B13A9E1译者:飞龙协议:CCBY-NC-SA4.0前言Python是一种动态但解释性语言,属于高级编程语言。凭借其清晰的语法和丰富的库,它被用作通用语言。基于Python的解释性质,它经常被视为一种脚本语言。Pyt......
  • Python中出现"No module named 'requests'"的图文解决办法
    第一步第二步第三步第四步第五步 第六步总结第一步找到pycharm中的虚拟环境的位置第二步打开虚拟环境位置的文件夹 找到Scripts的这个文件夹然后复制该文件夹的地址第三步打开“运行”(可以用快捷键WIN+R键打开)然后输入cmd第四步切换目录到虚拟环境......
  • pythony插件操作cloudflare
    https://juejin.cn/s/cloudflare%20dns%20api%20python通过安装CloudflareDNSAPI是Cloudflare提供的一组API接口,允许用户通过程序化方式管理其DNS记录。Python是一种流行的编程语言,可以通过它来编写与CloudflareDNSAPI交互的程序。下面是一些使用Python......
  • Python高阶---协程并发
    importasyncioimporttime====================================1.定义协程对象asyncdefhello(x):#time.sleep(x)#time.sleep是一个同步操作语句,无法达到异步的结果print('-222-',x)awaitasyncio.sleep(x)return'等待了{}秒'.format(x)#returnxifname==......
  • python - Counter简单使用
    统计元素数量,并返回字典,键为元素,值为个数fromcollectionsimportCounterlst=['a','b','c','d','a','b','a','c','c','c']dic=Counter(lst)print(dic)#Counter({'c......
  • python教程3.3:字符和编码
    1、二进制计算机只能存储和识别二进制,但是人类常用的字母、数字、汉字怎么用计算机存储和识别呢?人类强行约定一个对应表,把数字、字母和数字进行对应上,这样就可以用二进制表示字母和数字了。2、ASCII编码ASCII是美国于1967年创建,只有127个字母和数字(后面扩展128个,一共255个),用......
  • Python 潮流周刊#49:谷歌裁员 Python 团队,微软开源 MS-DOS 4.0
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。本期周刊分享了12篇文章,12个开源项目,2则视频,赠书5本《Hello算法》。重......