美文网首页测试之路
#Python#保存登录状态

#Python#保存登录状态

作者: 我叫GTD | 来源:发表于2018-06-24 22:32 被阅读0次

    做测试,尤其是做接口测试时,经常会碰到登录后的情况,如果每次都进行登录会很繁琐,哪怕每次调用之前定义的登录函数,也会大大的降低效率。这时可以充分利用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

    相关文章

      网友评论

        本文标题:#Python#保存登录状态

        本文链接:https://www.haomeiwen.com/subject/yywsyftx.html