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 异常

  • 相关阅读:
    【尺取】HDU Problem Killer
    【尺取或dp】codeforces C. An impassioned circulation of affection
    【搜索】codeforces C. The Tag Game
    【数学】codeforces B. The Golden Age
    【dfs+理解题意+构造】【待重做】codeforces E. Ice cream coloring
    【贪心】codeforces D. Minimum number of steps
    【数学】codeforces A. Success Rate
    【二分+交互】codeforces B. Glad to see you!
    【组合 数学】codeforces C. Do you want a date?
    JavaScript实现快速排序
  • 原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9273615.html
Copyright © 2011-2022 走看看