有2个接口:1、登录接口;2、更新用户信息接口,如果想调通接口2需要获取接口1的返回的cookies,可以先通过postman调用接口1,然后在 研究怎么把接口1获取的cookies传入到接口2中使用。
接口1通过postman调用的截图:
通过图片可以看成response返回了一个Cookies,Cookies下面一个name是JSESSIONID,Value是JD5331BE7E589CBA948A9ACBF7E82A56D
那么我们可以这么理解Cookies是一个字典,字典里面存放了key是JSESSIONID,value是JD5331BE7E589CBA948A9ACBF7E82A56D
写法就是这样的:
Cookies={
"JSESSIONID":"JD5331BE7E589CBA948A9ACBF7E82A56D"
}
通过postman调2次这个接口,返现返回的JD5331BE7E589CBA948A9ACBF7E82A56D是不断变化的,也就是说它不是个常量是个变量,要写成变量的形式,如何写成变量的形式的,答案很简单就是通过Cookies字典的key来获取value,即如下写法:
#先获取cookies
response.cookies
#转换成字典
cookies=dict(response.cookies)
#通过cookies字典的key来获取value
self.value=cookies['JSESSIONID']
为啥上面的value前面加了self,因为在我设计unittest框架里面没办法把步骤1获取的value通过传参数的办法传给接口2,写self就代表只要接口1和接口2都在一个测试类里面,大家都认识彼此,不需要获取和传入参数,value是公家的。
那接口2如何把Cookie传进去呢?首先定义一个字典Cookie它的key是JSESSIONID,value是接口self.value,然后在requests.post方法中加入cookies实际如下:
Cookies={
"JSESSIONID":self.value
}
response=requests.post(url,data=para,cookies=Cookies).text
这样的话整体的代码就是下面展示的了
#通过unittest来写一个独立接口的测试
import requests
import unittest
#测试类继承unittest.TestCase
class test_info(unittest.TestCase):
#用户先登录
def setUp(self):
url=ll+'user/login.do'
para={
"username":"suxiaominghaha",
"password":"123456"
}
response=requests.post(url,data=para)
#先获取cookies
response.cookies
#转换成字典
cookies=dict(response.cookies)
#通过cookies字典的key来获取value
self.value=cookies['JSESSIONID']
#测试用户信息更新接口
def test_case1(self):
url=ll+'user/update_information.do'
para={
"question":"喜欢吃的水果",
"answer":"橘子"
}
Cookies={
"JSESSIONID":self.value
}
response=requests.post(url,data=para,cookies=Cookies).text
print(response)
#通过框架调用类
if __name__ == '__main__':
unittest.main()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)