博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python接口自动化测试(四)-Cookie&Sessinon
阅读量:5942 次
发布时间:2019-06-19

本文共 3058 字,大约阅读时间需要 10 分钟。

  掌握了前面几节的的内容,就可以做一些简单的http协议接口的请求发送了,但是这些还不够。HTTP协议是一个无状态的应用层协议,也就是说前后两次请求是没有任何关系的,那如果我们测试的接口之前有相互依赖关系怎么办呢(比如我要在博客园发文章,是需要先登录的),这时我们就要用到cookie和session技术来保持客户端与服务器端连接的状态,这也就是本节要介绍的内容:

 

一、Cookie:

1、获取cookie:

# -*- coding:utf-8 -*-#获取cookieimport requestsimport jsonurl = "https://www.baidu.com/"r = requests.get(url)#将RequestsCookieJar转换成字典c = requests.utils.dict_from_cookiejar(r.cookies)print r.cookiesprint cfor a in r.cookies:    print a.name,a.value

输出:

]>{
'BDORZ': '27315'}BDORZ 27315

 

二、发送cookie:

# -*- coding:utf-8 -*-#发送cookie到服务器import requestsimport jsonhost = "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 jsonhost = "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 jsonhost = "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 jsonhost = "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.textprint '--------'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、提供默认数据:

s = requests.Session()s.auth = ('user', 'pass')s.headers.update({
'x-test': 'true'})# both 'x-test' and 'x-test2' are sents.get('http://httpbin.org/headers', headers={
'x-test2': 'true'})

 

 

 

参考:

本文转自贺满博客园博客,原文链接:http://www.cnblogs.com/puresoul/p/7488531.html
,如需转载请自行联系原作者。
你可能感兴趣的文章
OSGI企业应用开发(十二)OSGI Web应用开发(一)
查看>>
Python 以指定概率获取元素
查看>>
微信公众平台图文教程(二) 群发功能和素材管理
查看>>
关于System.Collections空间
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
Centos 7.5 部署DNS
查看>>
yum简介
查看>>
cp讲解
查看>>
MariaDB Galera Cluster 部署(如何快速部署MariaDB集群)
查看>>
如何在 Swift 语言下使用 iOS Charts API 制作漂亮图表?
查看>>
论代码审查的重要性
查看>>
「docker实战篇」python的docker爬虫技术-导学(一)
查看>>
如何确定一个网站是用Wordpress开发的
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
wdcp 安装
查看>>
C语言运算符优先级相关问题
查看>>
MP4视频播放器代码
查看>>
Nginx 匹配 iphone Android 微信
查看>>
ldap
查看>>