有了前面几节的介绍,基本的接口测试是可以满足了。本节一些其它的高级技巧:
一、认证
1、基本认证:
#-*- coding:utf-8 -*-
importrequests
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 importHTTPDigestAuth>>> url = 'http://httpbin.org/digest-auth/auth/user/pass'
>>> requests.get(url, auth=HTTPDigestAuth('user', 'pass'))
3、OAuth认证
二、代理
1、方法一:proxy参数:
importrequests
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>>> importrequests>>> 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):
importrequests#跳过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'))
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 异常