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

  • 相关阅读:
    pycharm-1
    WIN7、WIN10 右键在目录当前打开命令行Cmd窗口
    富文本框TinyMCE上传本地图片基本配置
    安装win10正式版后网速变慢的解决方法
    win10远程桌面出现身份验证错误。要求的函数不受支持
    C# 利用VS自带的WSDL工具生成WebService服务类
    解决IIS服务使用C#代码在Windows Server 2012上无法启动Excel的问题
    chorme浏览器不支持audio/video中的autoplay属性的解决方法
    iOS 内购笔记
    利用SortedMap对HashMap进行排序
  • 原文地址:https://www.cnblogs.com/zhang-jun-jie/p/9273615.html
Copyright © 2020-2023  润新知