Requests接口测试-对cookies的操作处理(三)

我们大家都知道cookie是有时效的,会存在一个过期现象。如果cookie不生效,就无法访问后续的其他接口,如何解决这个问题呢?我们可以借助unittest单元测试框架的测试固件来帮助我们解决。废话不多说了,来看一下整个过程的实现,整体代码解析如下:测试固件的作用是可以保证每次服务器返回的session是最新的,避免的失效问题,方便其他接口调用。

@classmethod
    def setUpClass(cls):
        r = requests.post(
                'http://xxxxxxx:20080/auth/login',
                data={"username":'system',"password":"123456"})
        with open('cookie','w') as f:
            f.write(r.cookies['session'])

    @classmethod
    def tearDownClass(cls):
        pass

定义一个readCookie方法,目的是方便读取写入文件中的cookie。

 def readCookie(self):
        with open('cookie','r') as f:
            return f.read()

两条接口测试用例,都带上登陆成功后的cookie,另外测试用例的命名要以test开头。

 def test_getInfo(self):
        r =requests.get('http://xxxxxx:20080/settings/option/cloud/data',
                        cookies={"session":self.readCookie()})
        return r.json()

    def test_getData(self):
        r=requests.get('http://xxxxxx:20080/settings/option/ipaddr/data',
                       cookies={"session":self.readCookie()})
        return r.json()

整体代码的实现:

import requests
import unittest

class CookieGet(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        r = requests.post(
                'http://xxxxxxxx:20080/auth/login',
                data={"username":'system',"password":"123456"})
        with open('cookie','w') as f:
            f.write(r.cookies['session'])
    @classmethod
    def tearDownClass(cls):
        pass

    def readCookie(self):
        with open('cookie','r') as f:
            return f.read()

    def test_getInfo(self):
        r =requests.get('http://xxxxxxx:20080/settings/option/cloud/data',
                        cookies={"session":self.readCookie()})
        return r.json()

    def test_getData(self):
        r=requests.get('http://xxxxxxxx:20080/settings/option/ipaddr/data',
                       cookies={"session":self.readCookie()})
        return r.json()

if __name__ == '__main__':
    unittest.main()

我们可以找一个互联网项目进行实战一下cookie的操作,比如登陆人人网,有兴趣的可以去尝试一下,我把整个测试代码发出来,方便大家去参考:

'''Cokkie的获取以及实战'''

data={'email':'xxxxxx@qq.com','icode':'','origURL':'http://www.renren.com/home',
      'domain':'renren.com','key_id':'1','captcha_type':'web_login',
      'password':'658ad9d22407ed607048fc41f388cec8798a77e61a29935b24ba909a1aa89923',
      'rkey':'9e75e8dc3457b14c55a74627fa64fb43','f':'http%3A%2F%2Freg.renren.com%2Fxn6218.do%3Fss%3D10756%26rt%3D27'}

def renLogin():
  '''获取登陆后返回的cookie''' r
=requests.post(url='http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2018661516954', data=data) return r.cookies def info(): '''查看信息''' data={'month':'7','requestToken':'-505719466','_rtk':'ad9c53b0'} r=requests.post('http://sc.renren.com/scores/loadBornInfo', data=data, cookies=renLogin()) print(r.text) info()

posted @ 2018-08-16 15:18  IT测试老兵  阅读(541)  评论(0编辑  收藏  举报
作者:测试老兵
出处:https://www.cnblogs.com/fighter007/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。