cookie的操作分为两种,一种是携带cookie,一种是写入cookie,因为有的接口的自动携带cookie,fiddler抓包在response下的cookies可以看到返回的json串,也就是cookie值,如果要获取到给后边的接口调用就要将其回写到cookie.json问文件中,也可以直接读取cookie.json的cookie,那么先看我们is_run的代码片
可见我们的接口requests接口是在res这里执行的,既然要携带cookie,那么我们的处理cookies的代码组就要在这儿插入,一种直接读取我们处理好的cookie传入requests,一种是通过res获取到cookie在写入我们处理好的cookies.json中,并且替换掉我们相应的cookie串字段。
看用例,cookie_handle字段我们有三种状态,分别对应写入,携带,no就是不执行cookie操作,那是是否执行就需要判断用例中cookie_handle字段,先上端伪代码
if cookie_handle == "yes":
cookie = cookie.json文件中获取到的数据["对应字段的key"]
if cookie_handle == "write":
获取cookie标识 = {"标识":"对应字段的key"}
那么问题来了,这个cookie.json是不是不存在,我们是不是要自己去设计一个结构,在用写好的json操作方法获取它,这来一个针对cookie的处理方法,之后传给requests,这样就完成了这次cookie的携带呢?
我们设计成这种结构
前边的json方法已经可以加载json文件获取其内容,并将内容load成json格式,
那么我们写一个操作cookie的方法,将json的内容提取出来,通过一个cookie_key来提取出cookie的值,在写一个cookie的写入方法起到一个更新作用
# -*- coding: utf-8 -*-
# @Time : 2020/1/15 9:16
# @Author : Willam.zja
# @FileName: handle_cookies.py
# @Software: PyCharm
# @Blog :https://blog.csdn.net/enemy_sprites
import os
import sys
sys.path.append(os.getcwd())
base_path = os.path.abspath(os.path.dirname(os.getcwd()))
from Utils.handle_json import HandleJson
def get_cookie_value(cookie_key):
"""
获取到cookie.json中的指定的cookie串
:param cookie_key:指定串的键
:return:cookie串
"""
data = HandleJson(base_path+'/Config/cookie.json').load_json()
return data.get(cookie_key)
def write_cookiess_value(data,cookie_key):
"""
获取到cookie.json中指定的cookie串,将指定的串替换为data,起到一个更新cookie.json的作用
:param data: 获取到的cookie
:param cookie_key: 用于指定cookie.json的部分串
:return:
"""
h_j = HandleJson(base_path+'/Config/cookie.json')
data1 = h_j.load_json()
data1[cookie_key] = data
h_j.write_json(data1)
这里调用了get_cookie_value方法,传入了app,获取到了cookie串
拿到了串,回到run_main中
拿到了cookie传到requests中,那么封装requests的base_requests中也要加入cookie参数
前边我们的base_requests中以及给cookie留有位置,所以到这里,已经可以正常的传入,我们来用fiddler抓一下,按照用例,我们的第二条用例cookie操作为yes,所以第二条用例header是携带cookie的
是不是cookie.json中的这个cookie串就成功的传入到了请求中,并且成功发送,那么这个是静态的cookie,动态的怎么办,就是先获取过来,写到cookie.json中,后边的携带这个心写入的,这样的完成了一个动态值的调用,也可以理解为关联。
运行,fiddler抓取数据,查看写入和携带的状态,用例二携带的cookie是执行用例2获取到的cookie
来源:CSDN
作者:Millet。
链接:https://blog.csdn.net/enemy_sprites/article/details/103983015