测试遇到个很小的需求:发送post请求,但只需要改变其中某几个键的键值。
那首先呢,我们先搞一下单条数据进行post请求。
一、单条数据
现成的方法,直接用就ok了。
import requests
import json
#初始化payload
payload ={
"a": "5b71249736de6472c6e6832c484fb20210203010",
"b": "test",
"c": [
"c1",
"c2",
"c3"
]
}
data=json.dumps(payload)
r=requests.post("post请求地址", data=data, headers={"Content-Type": "application/json"})
print(r.text)
如果有很多条数据,我们该如何呢。
二、多条请求数据
我们可以通过txt来实现,读出来后逐条请求接口。
txt数据如图所示:
import requests
import json
#你的txt文件所在的路径
path = r'D:\shuzilm\compare\post.txt'
f = open(path)
for line in f:
#debug时发现每行数据有换行符,我们把换行符替换了
data=line.replace('\n','')
r=requests.post("post请求地址", data=data, headers={"Content-Type": "application/json"})
print(r.text)
现在想想我们这个小小需求吧,只需要修改其中几个键的键值,那我们可以替换这几个键的键值就行。
三、替换某些键的键值
txt中我们可以只存需要修改的键的键值,这样只用初始化一次body就够了,txt如图所示:
import requests
import json
#初始化payload
payload ={
"a": "5b71249736de6472c6e6832c484fb20210203010",
"b": "test",
"c": [
"c1",
"c2",
"c3"
]
}
path = r'D:\shuzilm\compare\post.txt'
f = open(path)
for line in f:
#debug时发现每行数据有换行符,我们把换行符替换了
data1=line.replace('\n','')
#txt中两列数据我们按|分隔变为数组
data2 = data1.split('|')
#多列数据我们赋值就变得简单了
payload["a"] = data2[0]
payload["b"] = data2[1]
r = requests.post("post请求地址", json=payload, headers={"Content-Type": "application/json"})
print(r.text)
在新的版本的requests里面,除了对dict格式去编码以外,还可以使用json格式直接去传递,然后它就会被自动编码。这是 2.4.2 版的新加功能:
这样子是不是很简单就可以去实现了呢,而不需要像一里面需要转换为string之类的呢。