python接口测试学习—GET、POST请求
import requests
import json
使pip安装:
pip install requests
安装过后通过以下代码测试一下返回200状态码代表成功了
ro1 = requests.get("https://www.baidu.com")
print( ro1.status_code)
GET
1、GET请求只支持url编码,
2、GET对参数的数据类型get 只接受ASCII编码,
3、GET请求参数会被完整保留在浏览器历史记录里,
4、GET请求直接在URL里进行参数传递(有长度限制),
5、对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)
#GET请求
import requests
import json
payload = {'key1':'name','key2':'sex'}
r1 = requests.get('http://httpbin.org/get',params = payload)
print(r1.url) #获取请求内容
print(r1.text)#获取相应内容
输出内容
http://httpbin.org/get?key1=name&key2=value2
{
"args": {
"key1": "name",
"key2": "value2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.19.1"
},
"origin": "218.0.220.179",
"url": "http://httpbin.org/get?key1=name&key2=value2"
}
POST
POST请求支持多种编码,
对于参数的数据类型无限制,
POST中的请求参数不会被保留,
POST放在Request body中进行参数传递(无长度限制),
对于POST方式的请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
content= {'1key1':'name','2key2':'sex'}
r2 = requests.post('http://httpbin.org/post',data=content )
#等于r2 = request.post('http://httpbin.org/post',data={'key1':'name','key2':'sex'} )
print(r2.url)
print(r2.text)
输出内容
传递一个字典给 data 参数就,数据字典在发出请求时会自动编码为表单形式:
{
"args": {},
"data": "",
"files": {},
"form": {
"1key1": "name",
"2key2": "sex"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "20",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.19.1"
},
"json": null,
"origin": "218.0.220.179",
"url": "http://httpbin.org/post"
}
url='http://httpbin.org/post'
data={"ua":"13700002000",
"pw":"12qwaszx",
"ct":12
}
s =requests.post(url,data=json.dumps(data))
print (s.text)
#----------
#requests中也带有带有一个内置的json解码器,将返回的内容转换为dict
#------------
print (type(s.json()))
输出内容
{
"args": {},
"data": "{\"ua\": \"13700002000\", \"pw\": \"12qwaszx\", \"ct\": 12}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "49",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.19.1"
},
"json": {
"ct": 12,
"pw": "12qwaszx",
"ua": "13700002000"
},
"origin": "218.0.220.179",
"url": "http://httpbin.org/post"
}
<class 'dict'>
其他
#只用异常时才会启用抛出异常
ro1.raise_for_status()
#获取cookies
ro1.cookies