基于Python的接口自动化-JSON模块的操作

news2024/11/26 20:22:40

目录

引言

一、JSON是啥?

二、JSON的有效数据类型

三、Python JSON库的使用

结语


引言

        在使用Python进行接口自动化测试脚本时,一般都是脚本只写接口测试逻辑实现,而执行脚本时需要的测试用例数据都是写入excel、数据库或者指定的配置文件中,脚本通过读取这些测试数据来进行不同测试用例的执行,这样就做到了测试脚本和测试数据的分离,易于后续写实脚本的维护,这部分后续接口自动化框架来介绍怎么实现脚本和数据的分离。

在python脚本构建接口测试请求时,如发送put、post这样的请求时,一般都是以JSON格式的进行请求体数据发送请求,我们编写的接口测试数据一般都是参考接口文档说明进行的,也就是编写的接口测试数据的请求体一般都是JSON格式。

由于python数据类型与标准的JSON数据格式不一样,因此在python脚本读取数据进行接口测试前,需要将JSON数据转换成python对象。

针对json数据交换,python语言封装实现了相关的模块:json,以下介绍python json模块的主要操作和应用。

一、JSON是啥?

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。在现在的应用程序软件中前端和后端数据交互一般都是使用的JSON

二、JSON的有效数据类型

在 JSON 中,一般数据都是key-value对形式存在,数据使用花括号{}包含,value值必须是以下数据类型之一:

  • 字符串
  • 数字
  • 对象(JSON 对象)
  • 数组
  • 布尔
  • Null

JSON 的值不可以是以下数据类型之一:

  • 函数
  • 日期
  • undefined

有效JSON数据示例:

字符串:{ "name":"John" }
数字:{ "name":123 }
对象:{"employee":{ "name":"Bill Gates", "age":62, "city":"Seattle" }}
数组:{"employees":[ "Bill", "Steve", "David" ]}
布尔:{ "sale":true }
null:{ "middlename":null 
如果json比较复杂,可以上json在线解析网站:JSON在线 | JSON解析格式化—SO JSON在线工具,核验json是否标准正确。

三、Python JSON库的使用

使用 JSON 函数需要导入 json 库:import json

打开Pycharm工具导入json库后,模块下封装的方法如下:

其主要封装json.dumps()、json.loads()、json.dump()、json.load()

json.dumps():将 Python 对象编码成 JSON 字符串

json.loads():将已编码的 JSON 字符串解码为 Python 对象

json.dump():将Python内置类型序列化为json对象后写入文件

json.load():将文件中读取到的json形式的字符串转化为python类型

python数据类型和json类型转换关系表如下:

python数据转成json类型:

json类型转成python数据类型:

json.dumps()使用示例:

编辑如下代码:

import json
data1 = (1,2,3) # 元组
data2 = {'张山':'25','王五':'30'} # 字典
data3 = [1,2,3] # 列表
print(json.dumps(data1))
print(json.dumps(data2))
print(json.dumps(data3))

运行结果如下:

[1, 2, 3]
{"\u5f20\u5c71": "25", "\u738b\u4e94": "30"}
[1, 2, 3]

运行后发现python对象都转换成json类型了,其中元组和列表转换成json的数组,字典转换成带双引号的json格式,其中默认将字符串转换成ascii码,如果不想转换成ascii码,将上面代码改成如下即可:

print(json.dumps(data2,ensure_ascii=False))

json.loads()使用示例:

编辑如下代码:

import json
data1 = '{"name":"zhangshan","age":25}'
print(json.loads(data1))

  输出如下:

{'name': 'zhangshan', 'age': 25}

json.dump()使用示例:

编辑如下代码:

import json
 
data = {
    'name': 'wangwu',
    'liebiao': [1, 2, 3, 4],
    'yuanzu': (1, 2, 3)
}
with open('json_test.txt', 'w+') as f:
    json.dump(data,f)

  运行完成后会生成同路径下生成一个json_test.txt的文件,文件内容如下:

 json.load()使用示例:

在上面生成的文件基础上,读取文件的内容,代码如下:

import json
 
data = {
    'name': 'wangwu',
    'liebiao': [1, 2, 3, 4],
    'yuanzu': (1, 2, 3)
}
with open('json_test.txt', 'w+') as f:
    json.dump(data,f)
 
with open('json_test.txt') as f:
    print(json.load(f))

  输出如下:

{'yuanzu': [1, 2, 3], 'name': 'wangwu', 'liebiao': [1, 2, 3, 4]}

如上就是python json库的相关方法的使用和应用,后续有json数据和python类型交互转换时就需要引入json库,实现数据转换。

结语

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

如果有不明白的地方可以去看这个Python接口自动化测试实战教程,还是讲的蛮详细的!

------------------------------

【留言:自动化测试,免费获取教程】

从入门到精通【Python+接口自动化测试】实战项目进阶合集!!

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

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

相关文章

入门编程指南:如何从零开始学习编程?

一、自学编程需要注意什么? 自学编程需要注意以下几点: 选择适合自己的编程语言,在学习初期建议选择易入手的编程语言。需要不断地练习,并建立自己的编程项目,以此提高编程技巧和应用能力。追求知识的全面性&#xf…

实验二十二、压控电压源二阶带通滤波器的参数选择

一、题目 如图1所示电路中,已知 R 51 k Ω R51\,\textrm kΩ R51kΩ, R 3 20 k Ω R_320\,\textrm kΩ R3​20kΩ; f 0 1 kHz f_01\,\textrm{kHz} f0​1kHz。利用 Multisim 分析下列问题: (1)选取合适…

[图表]pyecharts-K线图

[图表]pyecharts-K线图 先来看代码: import requests from typing import List, Unionfrom pyecharts import options as opts from pyecharts.charts import Kline, Line, Bar, Griddef get_data():response requests.get(url"https://echarts.apache.org/…

攻击者使用 Python 编译的字节码来逃避检测

以 PyPI(Python 包索引)等开源包存储库为目标的攻击者设计了一种新技术,可以将他们的恶意代码隐藏在安全扫描器、人工审查和其他形式的安全分析中。 在一次事件中,研究人员发现恶意软件代码隐藏在 Python 字节码 (PYC) 文件中&am…

Scala学习(十二)---模式匹配

文章目录 1.基本语法2.模式守卫3.匹配常量和类型4.匹配对象和样例类4.1 匹配对象4.2 匹配样例类 5.偏函数中的模式匹配 1.基本语法 在Scala中的模式匹配类似于Java中的switch语法 //模式匹配基本语法val a10val b20val c""c match {case "" >println(…

VScode远程连接虚拟机(ubuntu系统)

文章目录 1. Windows端安装VScode2. 安装远程登录插件3. 配置Remote-SSH插件关于关闭后如何打开该配置文件 4. 测试ubuntu与windows可否ping通5. 在Ubuntu中安装 SSH1.检查是否安装ssh-server2.安装openssh-server3.查看ssh服务是否启动4.Ubuntu中配置openssh-server开机自动启…

路径规划算法:基于蝠鲼觅食优化的路径规划算法- 附代码

路径规划算法:基于蝠鲼觅食优化的路径规划算法- 附代码 文章目录 路径规划算法:基于蝠鲼觅食优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化…

6.4下周黄金最新行情走势分析及开盘交易策略

近期有哪些消息面影响黄金走势?下周黄金多空该如何研判? ​黄金消息面解析:周五(6月2日),美市尾盘,现货黄金收报1947.82美元/盎司,大幅下跌29.70美元或1.50%,日内最高触及1983.43美元/盎司&…

chatgpt赋能python:Python升序排序

Python升序排序 Python是一种非常强大的编程语言,它在数学计算、数据处理等方面具备很强的优势。在实际应用中,我们经常需要对一系列数据进行排序。而在Python中,升序排序是非常常见的操作。本篇文章将介绍在Python中如何使用ifelse进行升序…

JavaWeb13(ajax01 AJAX介绍AJAX登陆AJAX加入购物车AJAX修改购物车商品数量)

目录 一. 什么是ajax 二.为什么需要AJAX? 三. 同步和异步的区别. 四.基于jQuery实现AJAX语法 4.1 语法1-$.ajax(url,[settings]). 4.1 语法2-$.get/post(url, [data], [callback], [type]). 五 .案例 5.1 ajax实现登录 ①html代码 用户登录 用户名: 密码…

【无功优化】基于改进教与学算法的配电网无功优化【IEEE33节点】(Matlab代码时候)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

揭秘照片修复技巧:手把手教你如何让模糊照片变清晰

作为一名修图小能手,行走于修图界,修复模糊的照片是必备的技能之一,最近收到很多粉丝的私信,清一色都是问的怎么免费把照片变清晰,为了给各位小伙伴们解决难题,我决定拿出我私藏多年的秘密武器,…

【CloudCompare教程】016:计算点云的法向量

本文讲解CloudCompare计算点云的法向量的方法。 文章目录 一、法向量概述二、法向量计算1. 平面法向量2. 二次曲面3.三角网格化一、法向量概述 法向量,是空间解析几何的一个概念,垂直于平面的直线所表示的向量为该平面的法向量。法向量适用于解析几何。由于空间内有无数个直…

HAL库记录-RTC

芯片:STM32F29IIGT6 阿波罗开发板 1.配置时钟 2.HAL外设配置 3.代码解析 生成rtc文件 RTC_HandleTypeDef hrtc;/* RTC init function */ void MX_RTC_Init(void) {/* USER CODE BEGIN RTC_Init 0 */RTC_TimeTypeDef rtc_time;RTC_DateTypeDef rtc_data;/* USER CODE END RTC…

node笔记_生成自定义目录文件

文章目录 ⭐前言⭐node生成目录💖 mkdirSync创建目录💖 stat判断目录是否存在💖 mkdir创建目录💖 动态创建目录文件 ⭐结束 ⭐前言 大家好!我是yma16,本文分享node生成自定义目录文件。 背景: …

chatgpt赋能python:Python中去掉数字末尾的0:一种简单有效的方法

Python中去掉数字末尾的0:一种简单有效的方法 Python作为一种流行的编程语言,经常被用于各种应用程序的编写。在这篇文章中,我们将介绍如何使用Python去掉数字末尾的零的一种简单有效的方法。 为什么要去掉数字末尾的0? 对于数…

【工具使用】STM32CubeMX-GPIO配置

一、概述 无论是新手还是大佬,基于STM32单片机的开发,使用STM32CubeMX都是可以极大提升开发效率的,并且其界面化的开发,也大大降低了新手对STM32单片机的开发门槛。     本文主要讲述STM32芯片的GPIO的配置及其相关知识。GPIO…

(转载)基本粒子群算法及惯性权重分析(matlab实现)

1 理论基础 粒子群算法(particle swarm optimization,PSO)是计算智能领域,除了蚁群算法、鱼群算法之外的一种群体智能的优化算法。该算法最早由Kennedy和Eberhart在1995年提出的。PSO算法源于对鸟类捕食行为的研究,鸟类捕食时,找到食物最简单…

一零五九、Windows系统(amd)通过VMware安装黑苹果

我来详细的说一下过程: 配置: windows amd锐龙VMware 16.0 (16.1.0 build-17198959)macos 11.1unlocker(工具,让虚拟机支持引导苹果系统) 总体步骤: 下载iso镜像和unlocker工具,这里提供两个链接&#…

Spring Cloud Alibaba Nacos 构建配置中心

构建配置中心 新建命名空间 登录 Nacos 面板,依次点击左侧菜单栏【命名空间→新建命名空间】、填写命名空间名和描述信息,点击【确定】: 新建配置文件 依次点击左侧菜单栏【配置管理→配置列表】、切换到指定命名空间【此处为 shop】、点击…