接口自动化: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 文件上传
 
代码:

 

 

 

posted @ 2022-01-20 17:49  cudy222  阅读(58)  评论(0编辑  收藏  举报