接口测试中,json格式的报文发送时提示报文格式错误

摘要:
最近,我在接口测试中遇到了一个奇怪的问题。数据参数采用json格式。运行时始终提示消息格式不正确。将数据参数放入JSON在线解析中也是正确的。后来,我们通过打印数据发现了问题。当我们在python中打印数据时,双引号将自动更改为单引号。无法识别单引号的JSON格式,因此会提示消息格式错误。您可以使用json。dumps方法将数据保持为双引号格式。在接口测试中,可以以r=requests的形式写入数据。post或r=requests-post,两者都可以使用。此时,运行接口成功。Python字符串使用单引号,json使用双引号。

最近在接口测试时遇到一个奇怪的问题,data参数为json格式,运行时总是提示报文格式不对,把data参数放到JSON在线解析里面报文也是正确的。

接口测试中,json格式的报文发送时提示报文格式错误第1张

接口测试中,json格式的报文发送时提示报文格式错误第2张

后来通过打印data找到了问题所在,在python中打印data数据,会自动把双引号变为单引号,而单引号JSON格式不认,所以提示报文格式错误。

可以使用json.dumps(data)方法将数据保持双引号格式,

接口测试中,json格式的报文发送时提示报文格式错误第3张

接口测试中,json格式的报文发送时提示报文格式错误第4张

接口测试中,json格式的报文发送时提示报文格式错误第5张

接口测试中可以把data数据写成

r = requests.post(url=url,data=json.dumps(data))形式,也可以写成r = requests.post(url=url,json=data),两者都可以,此时再运行接口就成功了。

接口测试中,json格式的报文发送时提示报文格式错误第6张

注:

list,tuple,dict,set都是单引号 

L = ['Michael', 100, True]
t = ('Adam', 'Lisa', 'Bart')
d = {'Adam': 95, 'Lisa': 85, 'Bart': 59} 
s = set(['A', 'B', 'C']) 
Python字典(dict)与json数据格式的区别和联系 

在学习Python的时候,我们学习到,Python3 的标准数据类型有:

  数字(Number)

  字符串(String)

  列表(List)

  元组(Tumple)

  集合(Set)

  字典(Dictionary)

发现字典和json数据格式有点像。接下来比较一下两者的异同。

  1. python dict 字符串用单引号,json强制规定双引号。
  2. python dict 里可以嵌套tuple, json里只有arrayjson.dumps({1:2}) 的结果是 {“1”:2},而python中的json模块函数:json.dumps((1,2)) 的结果是[1,2]
  3. json key name 必须是字符串, python 是hashable, {(1,2):1} 在python里是合法的,因为tuple是hashable type;{[1,2]:1} 在python里TypeError: unhashable “list”
  4. json: true false null ;python:,True False None
  5. Python中提供了json.loads()转换函数,方便json数据的调用。

    接口测试中,json格式的报文发送时提示报文格式错误第7张

免责声明:文章转载自《接口测试中,json格式的报文发送时提示报文格式错误》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇yaml,json,ini这三种格式用来做配置文件优缺点html5 播放 rtsp下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python中读取txt文本出现“ 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence”的解决办法

UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence 今天练习通过读取英文版的Walden.txt的文本信息,统计文本中的英文单词词频的时候出现了这样的错误提示。 错误的意思是:Unicode的解码(Decode)出现...

echarts的图表根据父容器大小的改变而改变(弹窗easy-ui的window窗口)

1.echarts的图表只绘制一次,所以要想大小随着父容器变化就得调方法重新绘制。所以把绘制图表的方法提出来。 <div class="echart"><div : style="height: 100%; 100%;"></div></div> data(){return{chart:""}}, met...

python 调用 opencv 实现 图片文本倾斜校正

本项目为python项目需要安装python及python的opencv模块:opencv_python-4.0.1-cp37-cp37m-win32.whl 和 python的矩阵运算模块:numpy。        1、第一步,安装python3.7,具体安装步骤略。        2、第二步,使用pip安装python的矩阵运算模块:numpy。  ...

Python_实现json数据的jsonPath(精简版)定位及增删改操作

基于python实现json数据的jsonPath(精简版)定位及增删改操作   by:授客QQ:1033553122     实践环境 win7 64 Python 3.4.0   代码 #-*- encoding:utf-8 -*-   # author:授客   importre   defparse_sub_expr(sub_e...

Python基础语法三组合数据类型

一、列表(Lists)         列表属于Python中的序列类型,它是任意对象的有序集合,通过 “ 位置 ”或者 “ 索引 ” 访问其中的元素,它具有可变对象、可变长度、异构和任意嵌套的特点。         列表里第一个元素的为值或者索引是从 “ 0 ” 开始,第二个元素则是 “ 1 ”,一次类推。         列表的元素放置在方括号...

Python Linux系统管理之文件与文件路径管理

一、介绍 在 Linux 中,操作系统提供了很多的命令(例如:ls、cd),用于文件和目录管理。在 Python 中,有一个 os 模块,也提供了许多便利的方法来管理文件和目录。 二、os 模块 os:语义为操作系统。所以,os 模块提供的肯定是操作系统相关的功能了(与具体的平台无关)。 如果用 dir() 查看 os,会发现内容相当多。下面,只列出文件和...