做测试,尤其是做接口测试时,经常会碰到登录后的情况,如果每次都进行登录会很繁琐,哪怕每次调用之前定义的登录函数,也会大大的降低效率。这时可以充分利用cookies。
cookie、session、token是常用的web认证机制:
理解Cookie和Session机制
Token原理以及应用
可以参考上面两个博客来对此有个大体的理解。
方法一:
最常用的应该就是第三方库requests
下面将用 http://httpbin.org/ 来进行简单验证。对于测试来说这是个强大的网站,刚设计出功能时可以利用这个网站来进行简单的验证。
# -*- coding:utf-8 -*-
import requests
s = requests.Session()
response = s.get('http://httpbin.org/cookies/set/123/onetwothree') #这个网站的功能是用来设置cookie:[/cookies/set/{name}/{value}]
print('访问1:{}'.format(response.text))
# 开始验证
response2 = s.get('http://httpbin.org/cookies')
print('访问2:{}'.format(response2.text))
# 下面是未用Session直接进行访问的
response3 = requests.get('http://httpbin.org/cookies')
print('访问3(非Session):{}'.format(response3.text))
下面是得到的结果:
结果
方法二:
用自带的urllib:python3里面将urllib和urllib2合并了,urllib.request相当于urllib2
此外,还会用到http.cookjar
参考:urllib的实现---cookie处理
# -*- coding:utf-8 -*-
import urllib.request
import http.cookiejar
cookies = http.cookiejar.CookieJar() # 声明一个CookieJar对象实例来保存cookie
handler = urllib.request.HTTPCookieProcessor(cookies) # 创建cookie处理器
opener = urllib.request.build_opener(handler) # 通过handler来构建opener
response = opener.open('http://httpbin.org/cookies/set/123/onetwothree')
data = response.read()
print('访问1:{}'.format(data.decode('utf-8')))
request = urllib.request.Request('http://httpbin.org/cookies')
response2 = opener.open(request)
data2 = response2.read()
print('访问2:{}'.format(data2.decode('utf-8')))
# 直接进行访问,未采用上面cookies方法
response3 = urllib.request.urlopen('http://httpbin.org/cookies')
data3 = response3.read()
print('访问3:{}'.format(data3.decode('utf-8')))
最后结果同方法一得到的结果相同。
requests足够强大,相比来说也更加易用,而urllib则更接近底层,如果想有足够的扩展性,urllib是个不错的选择,如果要快速编写好一个脚本,requests则更适合。
相关API:
urllib.request
requests
网友评论