前言
对于我们编写接口自动化框架来说,有可能你的第一步骤就是需要获取你们平台的登录接口的cookie值,因为你之后的每个接口的header都会用到这个cookie。所以如何获取到并保存下来,然后再读取到,就是问题的关键了,本文教你详细的步骤
第一步骤:
import requests
class Login:
"""登录,负责收集cookies"""
# 给一个默认的登录url
def __init__(self):
self.url = "登录的接口url"
# 获取登录cookie
def get_cookies(self, username, password):
"""用户登录,返回cookie值"""
# data 是上边登录接口的入参,根据你的实际情况编写
data = {
"username": username,
"password": password,
"returnUrl": ""
}
# 使用requests库调用接口,并传入接口需要的参数
res = requests.post(url=self.url, data=data)
# 给接口返回的内容作json格式化,便于对返回参数的结果断言
res_data = res.json()
# 判断登录请求接口是否成功,具体断言根据你登录接口的实际回参
assert res_data["code"] == 10001, res_data["message"] == "success"
# 请求成功后返回cookie信息,这里重点是res.header,如果单纯使用res去get是没有值的
return res.headers.get('Set-Cookie')
到此为止,这个cookie值就已经取到了,并通过get_cookies()方法return出来
第二步骤:将获取的cookie值存储在某个yaml文件中,便于后期读取
import yaml
from login import Login
import os
import sys
def w_token(self):
# 将获取到的cookie值写入到一个yaml文件中,便于后边接口去读取
# 获取当前路径
cur = os.path.dirname(os.path.realpath(__file__))
# 获取yaml文件的路径,这个yaml文件是自己已经创建好的
yaml_path = os.path.join(cur, "token.yaml")
print(yaml_path)
# 调用登录login类
login = Login()
# 调用登录类中的 get_cookies方法,将返回的cookie值存在一个data变量中
data = [login.get_cookies("用户名", "密码")]
# 将cookie值和”token“ 拼接成一个变量 t
t = {"token": data} # 写入的内容
# 写入文件的固定格式
with open(yaml_path, 'w', encoding='utf-8') as f:
yaml.dump(t, stream=f, allow_unicode=True)
第三步骤:将已经存储的cookie读取出来,后边接口可以随时使用
def get_yaml(self):
# 获取当前路径
cur = os.path.dirname(os.path.realpath(__file__))
# 获取yaml文件的路径
yaml_path = os.path.join(cur, "token.yaml")
f = open(yaml_path, 'r', encoding='utf-8')
cfg = f.read()
d = yaml.load(cfg, Loader=yaml.FullLoader)
# 读取刚才 存的token的值,然后再放回变量d中
d = d["token"]
# 将已经存储cookie值的 变量d 返回出来
return d
如果帮到你了,感谢点点赞哈