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

news/2024/10/11 10:18:42

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

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

image

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

class HandleExtractData:def __init__(self):passdef 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的强大库来实现灵活的数据提取和处理。希望这个案例能对你有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

stm32开发笔记

GPIO全名为General Purpose Input Output,即通用输入输出。有时候简称为“IO口”。通用,说明它是常见的。输入输出,就是说既能当输入口使用,又能当输出口使用。端口,就是元器件上的一个引脚。 输入模式和输出模式是GPIO的基本特性,当然GPIO还有其它模式可选。 (一)模式…

UE4 C++ 杂

TMap中的Find和FindRef 在对蓝图节点进行C++重写时,发现UE对于TMap的Find有很多方式。首先是基础的Find,其就是返回对象类型的指针,如果不存在于TMap中其会返回nullptr接下来是FindChecked,其返回的是对象类型的引用,并且会在内部检测指针是否为空,如果没有会触发断言Fin…

在Docker内部使用gdb调试器报错-Operation not permitted

在docker内部使用gdb调试时刻遇到了gdb如下报错信息:warning: Error disabling address space randomization: Operation not permitted原因 地址随机化是linux一项安全特性,它允许内核进程启动每次加载库的时候都在随机化的分布在进程虚拟内存地址空间上(早期固定的库要加载到…

Bash脚本语法解析(典例精讲)

参考资料:https://github.com/AUTOMATIC1111/stable-diffusion-webuihttps://razeen.me/posts/the-ultimate-programmers-guide-to-bash-scripting/众所周知.sh文件是Linux系统中的脚本文件。(与之相对的还有windows系统上对应cmd的bat文件,对应powershell的ps1文件?)因此…

csapp-bomblab(自信满满版)

反汇编bomb文件 要查看机器代码文件的内容,有一类称为反汇编器(disassembler,assembler是汇编程序,dis-加在某些词语前表示相反的意思)的程序非常有用。这些程序根据机器代码产生一种类似于汇编代码的格式。在linux系统中,带‘-d’命令行标志的程序OBJDUMP(表示“object…

Windows系统,在Pycharm里面(python3.9)下载dlib的依赖包的具体步骤

原文作者:传送门 1、进入网址 轮子地址 然后选择这个下载:2、保存到自己的项目里面,然后使用pip的命令下载pip命令如下: pip install dlib-19.23.0-cp39-cp39-win_amd64.whl使用pip list的命令查看已经下载的包: dlib依赖包下载完成!

Python进阶篇笔记

一、面向对象 1、面向过程与面向对象面向过程:把程序流程化 面向对象:把程序抽象成类,类与类之间有联系2、类与对象 对象就是容器,是用来存放数据和功能的,对象就是数据和功能的集合 类的作用是吧对象做区分和归类,以及解决不同对象存相同数据的问题。类也是容器,也是用…