首页 存档 技术 查看内容

Python做接口测试,如何带上Cookie?

2018-3-30 13:00 |来自: 互联网 916 0

摘要: #引入需要的module import http.client, urllib.parse,urllib.request import http.cookiejar import http.cookies import re #创建请求参数 params = urllib.parse.urlencode({'email':'****X', 'password': '** ...

#引入需要的module

import http.client, urllib.parse,urllib.request

import http.cookiejar

import http.cookies

import re

#创建请求参数

params = urllib.parse.urlencode({'email':'****X', 'password': '**XX', 'origURL': '人人网 中国领先的实名制SNS社交网络。加入人人网,找到老同学,结识新朋友。','domain':'renren.com'})

#创建请求头

headers = {"Content-type": "application/x-www-form-urlencoded; charset=UTF-8",

"Accept": "text/plain",

"Referer":"应届生校招网 [即人人校招]-应届生2013年校园招聘、宣讲会,应届生找工作职位",

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0"

}

#链接网站

conn = http.client.HTTPConnection("人人网 中国领先的实名制SNS社交网络。加入人人网,找到老同学,结识新朋友。")

#提交接口请求

conn.request("POST", "/PLogin.do", params, headers)

#获取请求的响应

response = conn.getresponse()

#打印响应的状态码,以字典打印出返回的头部msg

print(response.status, response.reason,response.msg)

dic=response.msg

#关闭链接

conn.close()

#生成一个http.cookiejar对象

cj=http.cookiejar.CookieJar()

#新建一个opener

opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

#植入opener

urllib.request.install_opener(opener)

#打开重定向的网址

h=opener.open(L)

h2=h.read().decode('utf-8')

#打印所有的cookie

for item in cj:

print(item.name,'=',item.value,'\n')

if item.name=='xnsid':

headers['xnsid']=item.value

rtk=re.findall(r'\'\w \'',str(h2))

print(rtk[1][1:-1])

params2={}

params2['_rtk']=str(rtk[1][1:-2])

params2=urllib.parse.urlencode(params2).encode()

conn2=http.client.HTTPConnection('xiaozhao.renren.com')

conn2.request('POST','/message/count',params2,headers)

response2=conn2.getresponse()

print(response2.status,response2.reason,response2.msg)

print(response2.read().decode('utf-8'))

conn2.close()

解决办法:

(1)如果你使用的http组件支持添加cookie,那最好如果没有只能通过header加一个名字为cookie的header,但这样的缺点是会覆盖原有的内部cookie,一般做的比较成熟的http组件都是有独立的cookie管理对象的

(2)接口测试推荐使用requests库

requests支持带持久 Cookie 的会话

s = requests.Session()

s.post(url, headers=headers, data=params)

就解决你的问题了



关注尚脑教育,更多测试干货等你呦


声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部