zoukankan      html  css  js  c++  java
  • Python接口自动化测试-requests库的基础使用

    简单介绍

    requests库简单易用的HTTP库, 这是我看了虫师的那本书后《Web接口开发与自动化测试--基于Python语言》后总结的

    Get请求

    格式:requests.get(url)。 requests.get(url,params={})

    注意:若需要传请求参数,可直接在url最后的?后面,也可以调用get()时多加一个参数params,传入请求参数,注意需要传dict格式;如下图

    第一种
    
    url = 'http://127.0.0.1:8888/passport/user/login'
    param = {
    'username': '123',
    'password': '321'
    }
    
    """通过params传参"""
    res = requests.get(url, params=param)
    # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'}
    print(res.json())
    
    """通过params方式传参,最终发出的url也是一致的"""
    # http://127.0.0.1:8888/passport/user/login?username=123&password=321
    print(res.url)
    
    
    第二种
    
    """通过url最后加上请求参数列表"""
    url = 'http://127.0.0.1:8888/passport/user/login?username=123&password=321'
    res = requests.get(url, verify=False)
    # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'}
    print(res.text)

    Post请求

    格式:requests.post(url,data)

    注意:若无请求参数可不传data;当传入请求参数时必须传入dict格式

    url = 'http://127.0.0.1:8888/passport/user/post_login'
    
    data = {
     'username': '123',
     'password': '321'
     }
    
    """传入请求参数"""
    res = requests.post(url, data=data)
    # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'}
    print(res.json())
    
    """查看请求url"""
    # http://127.0.0.1:8888/passport/user/post_login
    print(res.url)
    

      

    对GET和POST的再次封装

     1     def http_post(self, url, data, body_format="JSON"):
     2         self.driver.set_url(url)
     3         self.driver.set_params({})
     4         self.driver.set_data(data)
     5         if body_format == "JSON":
     6             return self.driver.postWithJson()
     7         else:
     8             return self.driver.postWithCookies()
     9 
    10     def http_get(self, url, params={}):
    11         self.driver.set_url(url)
    12         self.driver.set_params(params)
    13         return self.driver.get()

    自定义headers和cookies

     1     """自定义headers"""
     2     url = 'https://api.github.com/some/endpoint'
     3     headers = {'user-agent': 'my-app/0.0.1'}
     4 
     5     r = requests.get(url, headers=headers)
     6     # {'message': 'Not Found', 'documentation_url': 'https://developer.github.com/v3'}
     7     print(r.json())
     8 
     9     """自定义cookies"""
    10     url = 'http://httpbin.org/cookies'
    11     cookies = dict(cookies_are='working')
    12     cookies2 = {'cookies_are': 'working'}
    13 
    14     r = requests.get(url, cookies=cookies)
    15     # {'cookies': {'cookies_are': 'working'}}
    16     print(r.json())

    SSL证书验证

     当发送请求如果报以上错误时,可以在请求方法里加多一个字段 verify=False

    就可以解决该问题,这个字段是为了免去HTTPS的验证步骤

    url = 'https://www.imooc.com'
    res = requests.get(url, verify=False)
    

      

    响应内容

    注意:当调用 json() 时,确保响应内容是json格式字符串,否则会报错

     1     url = 'http://127.0.0.1:8888/passport/user/login'
     2     param = {
     3         'username': '123',
     4         'password': '321'
     5     }
     6     res = requests.get(url, params=param)
     7     print('请求url: ' + res.url)
     8     print('响应内容 json格式: ' + json.dumps(res.json()))
     9     print('响应内容 字符串格式: ' + res.text)
    10     print('响应内容 二进制格式: ' + str(res.content))
    11     print('响应码: ' + str(res.status_code))

    获取header

    >>> r.headers['Content-Type']
    'application/json'
    
    >>> r.headers.get('content-type')
    'application/json'

    获取cookie

    >>> r.cookies['example_cookie_name']
    'example_cookie_value'
    

      

  • 相关阅读:
    利用docker搭建RTMP直播流服务器实现直播
    基于.NET平台的Ocelot网关框架教程汇总
    docker swarm集群搭建及使用Portainer、shipyard
    Swarm 集群并用 Portainer 管理
    如何在Debian 9上安装和使用Docker
    人不成熟的五大特征:立即要回报、不自律、经常被情绪所左右、不愿学习、做事情不靠信念靠人言(你中了几条?)
    使用 xpath helper 提取网页链接
    Python 爬虫js加密破解(四) 360云盘登录password加密
    Python 爬虫js加密破解(三) 百度翻译 sign
    Python 获得最近一个月的每天的日期
  • 原文地址:https://www.cnblogs.com/xinhua19/p/13579871.html
Copyright © 2011-2022 走看看