从零开始数据驱动接口自动化测试 cookie携带与写入- 08

别来无恙 提交于 2020-01-28 05:25:12

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
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!