接口自动化:2. requests第三方库


学习前提,先复习下面向对象的知识点。

----------

1. 安装requests:pip install requests

2. 了解常用方法:

requests.get()    传入url,params requests.post()     传入url,data用于传参,json也用于传参【是用data还是json可以看content_type值;也可用json.dumps()进行转化,详细见下】 requests.put() requests.delete() requests.request() 可以发送所有类型的请求:get,post,put,delete   data和json传参以及content-type的关系如下: 1. data传参:报文是dict类型,那么默认content-type:/x-www-form-urlencoded datachuancan:报文是str类型,那么默认content_type:text/plain 2. json传参:报文是dict类型,那么默认content-type:application/json 总结:data可以传纯键值对的dict(非嵌套的dict),也可以传str格式。(如果是嵌套的字典,就需要使用json.dumps()把嵌套字典转化为json字符串传参) json可以传任何形式的dict(包括嵌套的dict)   json.loads() 把json字符串转化为dict格式 json.dumps() 把dict格式转化为json字符串   3. requests模块返回的response对象详解 res.json() 获得返回的json对象,字典格式数据 res.text() 获得返回的字符串格式的数据 res.content() 获得返回的bytes字节类型的数据 res.status_code() 返回状态码 res.reason() 返回状态信息 res.cookies 返回cookie信息 res.headers 返回响应头 res.request xxx 返回请求的数据,如:请求头,请求参数...     ---------------------------------------------------------------------------------------- 实践代码如下: import requests

#定义类 class TestRequest:     #定义属性--略     #定义方法名--实现一个get请求:获取首页header接口请求     def test_get_header(self):         url = 'https://test-api.vistopia.com.cn/api/v1/home/header'         params = {             'api_token':'',             'req_time':1641441350,             'sign':'fa6a58c19fdfe6454e1de26e41e98fd1'         }
        res = requests.get(url=url,params=params)         print(res.json())
    #定义方法名--实现一个post请求:     def test_post_cancel_subscriptions(self):         url = 'https://test-api.vistopia.com.cn/api/v1/auth/post-login'         #根据抓包看content_type类型,判断是用json还是data传参         json = {             'password':123456,             'phone': 15600780168,             'sign': '4224d2d3bfd288b7727b5e88771eaa91',             'api_token':'',             'area_code':86,             'req_time':1642669481         }
        res = requests.post(url=url,json=json)         print(res.json())

#调用类的方法
if __name__ == '__main__':     TestRequest().test_get_header()     TestRequest().test_post_cancel_subscriptions()   ------------------------------------------------------------------------------------------ 关于接口关联,比如第二个接口会用到第一个接口返回的值 设置全局变量,类变量 如a=‘’ 第一个接口的值进行赋值:类名.变量 = res.json()【‘字段名’】 第二个接口直接使用如:access token = “+变量名.a”   ------------------------------------------------------------------------------------------- 其实:不管是get还是post还是put和delete,都是调用的requests.request方法,而requests.request方法调的是session.request方法。 请求四要素:请求方式;请求路径,方式传参,请求头【若跑不通,则判断是否需要cookie鉴权 或 session鉴权】 method 请求方式 url 请求路径 params=none get方式传参 data=none post方式传参 headers=none 请求头 cookies=none 请求cookie files=none 文件上传   代码: