一:在common包中,封装一个yaml_util的工具包
1. 将获取到的数据,写入到extrac.yaml文件中,通过data
def write_extract_yaml(data):
2. 需要用到该参数时,读取extrac.yaml文件中,由于会有多个参数,所以通过字典的key值方式进行读取对应的值
def read_extract_yaml(key):
3. 每次都是新生成的参数,因此需要及时清空该文件,清空extract_yaml文件
def clear_extract_yaml():
import yaml
import os
# 获取项目的根目录
# 1.os.path.dirname(__file__):获取当前文件的目录
# 2..split('common')[0]:切割路径后,得到根目录path
def get_obj_path():
return os.path.dirname(__file__).split('common')[0]
# 写入extract_yaml文件:追加
def write_extract_yaml(data):
# 以追加的方式,打开根目录下的对应文件
# dump 是写入,有这些参数:data, stream=None, Dumper=Dumper, **kwds
# 通过data,传入之后,写入:extract_yaml文件
with open(os.getcwd().split('common')[0]+"/extract.yaml",encoding="utf-8",mode="a+") as f:
yaml.dump(data, stream=f,allow_unicode=True)
# 读取extract_yaml文件,读取的时候不需要写数据传参
# 用load方式读取文件流
def read_extract_yaml(key):
with open(os.getcwd().split('common')[0]+"/extract.yaml",encoding="utf-8",mode="r") as f:
value = yaml.load(f,yaml.FullLoader)
return value[key]
# 清空extract_yaml文件
def clear_extract_yaml():
with open(os.getcwd().split('common')[0]+"/extract.yaml",encoding="utf-8",mode="w") as f:
f.truncate()
if __name__ == '__main__':
write_extract_yaml({"name":"Lucy"})
二:在接口中,存入和读取对应的参数值
1. 写入参数和值,将提取到的token,存到extract的yaml文件,以Authorization:value的方式存储
write_extract_yaml({"Authorization":res.json()['data']['token']})
2. 在对应的接口中,调用token值
"Authorization": read_extract_yaml("Authorization")
3. 一般在每次执行用例前,将旧有参数先清空,可以结合conftest中的fixture完成
@pytest.fixture(scope="session",autouse=True,name="db")
def red_excel():
print("这是前置的方法,可以实现部分以及全部用例的前后置")
clear_extract_yaml()
yield "success"
print("这是后置的方法,可以实现部分以及全部用例的前后置")
PS:这种传参和关联方法并不是最优解,建议用:极限封装成零代码的方式实现接口关联