Requests04--关联

res=requests.post(url, cookies)

什么是关联接口

①多个接口之间存在依赖关系

<1>让你测试登录成功后的页面,登录成功不是你测

<2>让你测试退单(取消订单)接口,但是下单不是你测

<3>业务流程测试:测试下单后,退单功能正确性

登录时的关联接口测试

①http无状态

<1>上一个网页的数据,只传递一次给下一个网页(接口传参),之后数据丢失

②http无状态解决方案

<1>cookie/cookies

2>在客户端存储数据,用于在多个网页/接口间共享数据

3>网页中“记住账号和密码”,很多都是使用了cookie

<2>session(会话)

1>在服务器存储数据,用于在多个网页/接口间共享数据

2>登录之后,一直保持在线状态,很多时候使用了session

<3>cookie和session也可以混合使用

如何关联登录接口/保持会话/会话保持

①给登录接口发送请求,获得响应头,在响应头中获得set-cookie(其中存着会话编号sessionid),取出来要关联的值(比如sessionid)

<1>res1=requests.post(被依赖url)

<2>res1.cookies用于获得前一个接口(服务器)发给客户端的cookie值

②给被测接口发请求,将上一步的关联值当做参数(很多时会放在请求头的cookie中)发过去

<2>res=requests.post(被测url, cookies=上一接口的cookie值)

关联接口

'''关联接口
被测接口:.../apitest/refer/info/
  功能:查询信息接口
  方法:get方法
  无参
关联接口:/apitest/refer/login/
  功能:登录接口
  方法:post方法
  参数:username、password
  数据库表:apitest.users'''
import requests
# url='http://192.168.237.129/apitest/refer/info/'
# res=requests.get(url)
# print(res.text) #缺少会话,缺少关联
url='http://192.168.237.129/apitest/refer/login/'
args={'username':'admin','password':'123456'}
res=requests.post(url,args)
# print(res.text)
# print(res.headers['set-cookie']) #获得响应头中的cookie
# print(res.cookies) #获得响应的cookie值,更方便
cookie=res.cookies #被依赖接口的cookie
url='http://192.168.237.129/apitest/refer/info/'
res=requests.get(url,cookies=cookie)
print(res.text)

实现会话保持的自动关联

import requests
s=requests.session() #创建会话(同一个客户端在进行连续的多次请求,自动传递cookie、sessionid、token)
url='http://192.168.237.129/apitest/refer/login/'
args={'username':'admin','password':'123456'}
s.post(url,args)
url='http://192.168.237.129/apitest/refer/info/'
res=s.get(url)
print(res.text)
posted @ 2021-11-04 10:11  暄总-tester  阅读(149)  评论(0)    收藏  举报