zoukankan      html  css  js  c++  java
  • python 接口自动化测试(五)其他-认证&代理&超时配置

    有了前面几节的介绍,基本的接口测试是可以满足了。本节一些其它的高级技巧:

    一、认证

    1、基本认证:

    复制代码
    # -*- coding:utf-8 -*-
    import requests
    
    url = "http://httpbin.org/basic-auth/user/passwd"
    
    r1 = requests.get(url)
    print "未提供用户名密码:" + str(r1.status_code)
    
    #Basic Authentication
    r2 = requests.get(url,auth=('user','passwd'))
    print "已提供用户名密码:" + str(r2.status_code)
    复制代码

    输出:

    未提供用户名密码:401
    已提供用户名密码:200

    2、数字认证:

    >>> from requests.auth import HTTPDigestAuth
    >>> url = 'http://httpbin.org/digest-auth/auth/user/pass'
    >>> requests.get(url, auth=HTTPDigestAuth('user', 'pass'))
    <Response [200]>

    3、OAuth认证

    暂略。可参考官方文档:http://docs.python-requests.org/en/master/user/authentication/

    二、代理

    1、方法一:proxy参数:

    复制代码
    import requests
    
    proxies = {
      "https": "http://41.118.132.69:4433"
    }
    r = requests.post("http://httpbin.org/post", proxies=proxies)
    print r.text
    复制代码

    2、方法二:设置环境变量:

    复制代码
    $ export HTTP_PROXY="http://10.10.1.10:3128"
    $ export HTTPS_PROXY="http://10.10.1.10:1080"
    
    $ python
    >>> import requests
    >>> requests.get('http://example.org')
    复制代码

    3、HTTP Basic Auth使用代理方法:http://user:password@host/

    proxies = {'http': 'http://user:pass@10.10.1.10:3128/'}

    三、证书验证

    1、SSL证书(HTTPS):

    import requests
    
    #跳过12306 的证书验证,把 verify 设置为 False: 
    r = requests.get('https://kyfw.12306.cn/otn/', verify=False)
    print r.text

    2、客户端证书:

    >>> requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))
    <Response [200]>

    or

    s = requests.Session()
    s.cert = '/path/client.cert'

    四、超时配置

    1 、利用timeout参数来配置最大请求时间:

    r = requests.get('https://github.com', timeout=5)

    2、设置timeout=None,告诉请求永远等待响应,而不将请求作为超时值传递

    r = requests.get('https://github.com', timeout=None)

    五、错误异常:

    1、所有Requests显式抛出的异常都继承自:requests.exctptions.RequestException

    2、遇到网络问题(如:DNS查询失败,拒绝连接等)时,requests会抛出一个 ConnectionError 异常

    3、遇到罕见的无效HTTP响应时,Request则会抛出一个 HTTPError 异常

    4、若请求超时,则抛出一个 Timeout 异常

    5、若请求超过了最大的重写向次数,则会抛出一个 TooManyRedirects 异常

  • 相关阅读:
    不可小视视图对效率的影响力
    Maximum Margin Planning
    PhysicsBased Boiling Simulation

    Learning Behavior Styles with Inverse Reinforcement Learning
    Simulating Biped Behaviors from Human Motion Data
    Nearoptimal Character Animation with Continuous Control
    Apprenticeship Learning via Inverse Reinforcement Learning
    回报函数学习的学徒学习综述
    Enabling Realtime Physics Simulation in Future Interactive Entertainment
  • 原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9273615.html
Copyright © 2011-2022 走看看