zoukankan      html  css  js  c++  java
  • python --requests模块使用

    1.前言

    在做接口测试中,我们可以通过Python中的requests库来完成向第三方发送http请求的场景,也可以作为接口测试用例执行的一种方式。基于此我们需要来研究下requests库的功能

    中文参考文档:http://2.python-requests.org/zh_CN/latest/

    2.应用

    2.1requests模块安装

    requests属于第三方库可以通过pip命令进行安装

    
    
    pip install requests

    2.2requests的使用

    1.发送请求


    import requests
    #get请求
    response=requests.get('http://www.baidu.com')
    print(response)    #输出服务器返回码


    #post请求
    response_1=requests.get('http://www.baidu.com')
    print(response_1)

    requests.put(“http://httpbin.org/put”)                                          # PUT请求
    requests.delete(“http://httpbin.org/delete”)                                    # DELETE请求

    2.参数传递

    #验证天气预报的接口  地址:http://apis.juhe.cn/simpleWeather/query

    param={'key':'5975e4181b085de266aa0f9b8269e37a','city':'北京'}
    #get请求与post请求带参用法一样
    response=requests.get('http://apis.juhe.cn/simpleWeather/query',param)
    #查看接口文档 已知返回的是json文件
    print(response.json())
    
    
    

    3.响应内容

    r.encoding                       #获取当前的编码
    r.encoding = 'utf-8'             #设置编码
    r.text                           #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
    r.content                        #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。
    ​
    r.headers                        #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
    ​
    r.status_code                     #响应状态码
    r.raw                             #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()   
    r.ok                              # 查看r.ok的布尔值便可以知道是否登陆成功
     #*特殊方法*#
    r.json()                         #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
    r.raise_for_status()             #失败请求(非200响应)抛出异常
     

    4.定制头和cookie信息

    header = {'user-agent': 'my-app/0.0.1''}
    cookie = {'key':'value'}
     r = requests.get/post('your url',headers=header,cookies=cookie) 
     
    
    
    data = {'some': 'data'}
    headers = {'content-type': 'application/json',
               'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
     
    r = requests.post('https://api.github.com/some/endpoint', data=data, headers=headers)
    print(r.text)

    5.上传文件

     

    requests.post(url=url, headers=headers, data=params, files=files)
    参数说明:

    url:请求url地址
    headers:请求头
    data:发送编码为表单形式的数据
    files:上传的文件,如:
    files = {'upload_img': ('report.png', open('report.png', 'rb'), 'image/png')}
    参数说明:
    1.report.png:文件名
    2.open('report.png', 'rb'):文件内容
    3.image/png:文件类型
    # coding:utf-8

    import requests

    # 请求url
    url = "http://httpbin.org/post"

    # 请求头
    headers = {
       "Accept": "*/*",
       "Accept-Encoding": "gzip, deflate",
       "User-Agent": "python/2.9.1",
    }

    # 查询字符串
    params = {'name': 'Jack', 'age': '24'}

    # 文件
    files = {'upload_img': ('report.xlsx', open('report.xlsx', 'rb'), 'image/png')}
    r = requests.post(url=url, data=params, headers=headers, files=files)

    print r.status_code  # 获取响应状态码
    print r.content  # 获取响应消息

    if __name__ == "__main__":
       pass
    
    
    出处:https://www.cnblogs.com/hn-daxiong/
    欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。
  • 相关阅读:
    day22 面向对象
    springMVC中 POST 请求数据变乱码问题
    Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()Z is abstract
    java.sql.SQLException: Unknown system variable 'tx_isolation'
    Mysql命令
    paas相关,添加ing
    Angular2中实现基于TypeScript的对象合并方法:extend()
    NgStyle和NgIf控制HTML标签显示的区别
    执行ng build --prod --aot命令报错
    JavaScript中的小陷阱(不定期更新。。)
  • 原文地址:https://www.cnblogs.com/hn-daxiong/p/12517880.html
Copyright © 2011-2022 走看看