接口自动化_Requests库
一、Requests第三方库
requests库用用来发送http协议请求以及接收http协议响应的第三方库,主要用于接口自动化测试
安装:pip install requests
二、requests方法:
requests.get() 发送get请求
requests.post() 发送post请求
requests.delete() 发送delete请求
requests.put() 发送put请求
requests.request() 最核心的方法
def request(
self,
method, #请求方式
url, #请求路径
params=None, #get请求参数
data=None, #post请求和get请求传参
json=None, #post请求传参
headers=None, #请求头
cookies=None, #cookie信息
files=None, #文件上传
--------------------------------------------
auth=None, #鉴权
timeout=None, #超时
allow_redirects=True, #是否运行重定向
proxies=None, #设置代理
hooks=None,
stream=None, #文件下载
verify=None, #ssh认证
cert=None, #CA证书
):
requests.session() 创建会话对象
requests.get(url,params=None,**kwargs)
requests.post(url,data=None,json=None,**kwargs)
data和json传参的区别:
postman中:
1.请求的参数是:from-data 代表是表单传参或者文件上传 ,type=file
Content-Type:multipart/form-data
2.请求的参数是:x-www-form-urlencoded 代表是表单传参 ,(k1=1&k2=2)
Content-Type:application/x-www-form-urlencoded (data传参)
3.请求的参数是:raw,代表原始格式传参
Content-Type:text:text/plain (data传参)
javascript:application/javascript
json:application/json (json传参)
html:text/html
xml:application/xml
4.请求的参数是:binary,代表原始格式传参
Content-Type:application/octent-stream
python中:
data传参表示表单传参,默认的请求头:Content-Type:application/x-www-form-urlencoded,请求参数的格式:k1=1&k2=2,参数是纯键值对的字典,如:(key1:value1,key2:value2)
data传参表示文本传参:默认请求头:Content-Type:text/plain,参数:str类型
json传参表示用json格式传参,默认的请求头:json:application/json,参数是字典类型,包括键值对和列表的字典类类型
三、response返回对象
res.text 返回接口的文本信息
res.content 返回bytes字节类型数据
res.json() 返回字典格式数据
res.start_code 返回状态码
res.reason 返回状态信息
res.cookie 返回cookie信息
res.encoding 返回编码格式
res.headers 返回响应头
res.resquest.xxx 返回请求的数据
四、Requests实战:
json.dumps() 把字典转化成字符串
json.loads() 把字符串转化成字典
import requests
imoert re
class TestDemo:
# 类变量 获取token实现接口关联
token = ""
def test_get_token(self):
url = "http://192.168.20.102:180/flexbase/api/w/logon/login"
data = {
"username": "102_180",
"password": "1"
}
res = requests.request("post", url=url, data=data)
print(res.json())
TestDemo.token = res.json()['data']['token'] # json提取器获取token
# Test_demo.token = re.search('"token" : "(.*?)"', res) 正则表达式获取token
print(TestDemo.token)