Python接口自动化测试的实现( 四 )


一、Cookie:
1、获取cookie:
# -*- coding:utf-8 -*-#获取cookieimport requestsimport json url = "https://www.baidu.com/"r = requests.get(url) #将RequestsCookieJar转换成字典c = requests.utils.dict_from_cookiejar(r.cookies) print r.cookiesprint c for a in r.cookies:print a.name,a.value输出:
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>{'BDORZ': '27315'}BDORZ 273152、发送Cookie
# -*- coding:utf-8 -*-#发送cookie到服务器import requestsimport json host = "http://httpbin.org/"endpoint = "cookies" url = ''.join([host,endpoint])#方法一:简单发送# cookies = {"aaa":"bbb"}# r = requests.get(url,cookies=cookies)# print r.text #方法二:复杂发送s = requests.session()c = requests.cookies.RequestsCookieJar()c.set('c-name','c-value',path='/xxx/uuu',domain='.test.com')s.cookies.update(c)二、Session
1、保持会话同步:
# -*- coding:utf-8 -*-import requestsimport json host = "http://httpbin.org/"endpoint = "cookies" url = ''.join([host,endpoint])url1 = "http://httpbin.org/cookies/set/sessioncookie/123456789" r = requests.get(url)print r.text print "------"s = requests.session() #初始化一个session对象s.get(url1) #cookie的信息存在了session中r = s.get(url) print r.text输出:
{"cookies": {}} ------{"cookies": {"sessioncookie": "123456789"}}2、保存绘画信息:
# -*- coding:utf-8 -*-import requestsimport json host = "http://httpbin.org/"endpoint = "headers" url = ''.join([host,endpoint]) header1 = {"testA":"AAA"}header2 = {"testB":"BBB"} s = requests.session() #初始化一个session对象s.headers.update(header1) #已经存在于服务中的信息r = s.get(url,headers=header2) #发送新的信息 print r.text输出:
{"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Connection": "close","Host": "httpbin.org","Testa": "AAA","Testb": "BBB","User-Agent": "python-requests/2.18.1"}}3.删除已存在的会话信息,保存为None
# -*- coding:utf-8 -*-import requestsimport json host = "http://httpbin.org/"endpoint = "headers" url = ''.join([host,endpoint]) header1 = {"testA":"AAA"}header2 = {"testB":"BBB"} s = requests.session() #初始化一个session对象s.headers.update(header1) #已经存在于服务中的信息r = s.get(url,headers=header2) #发送新的信息 print r.text print '--------' s.headers['testA'] = None #删除会话里的信息testAr1 = s.get(url,headers = header2)print r1.text{"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Connection": "close","Host": "httpbin.org","Testa": "AAA","Testb": "BBB","User-Agent": "python-requests/2.18.1"}} --------{"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Connection": "close","Host": "httpbin.org","Testb": "BBB","User-Agent": "python-requests/2.18.1"}}4、提供默认数据:
{"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Connection": "close","Host": "httpbin.org","Testa": "AAA","Testb": "BBB","User-Agent": "python-requests/2.18.1"}} --------{"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Connection": "close","Host": "httpbin.org","Testb": "BBB","User-Agent": "python-requests/2.18.1"}}参考:
http://docs.python-requests.org/en/master/user/quickstart/#cookies
http://docs.python-requests.org/en/master/user/advanced/#session-objects
(5)其他(认证&代理&超时设置)
一、认证
1、基本认证:
# -*- coding:utf-8 -*-import requests url = "http://httpbin.org/basic-auth/user/passwd" r1 = requests.get(url)print "未提供用户名密码:" + str(r1.status_code) #Basic Authenticationr2 = requests.get(url,auth=('user','passwd'))print "已提供用户名密码:" + str(r2.status_code)输出:


推荐阅读