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

一、认证

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

作者:Glen.He
出处:http://www.cnblogs.com/puresoul/