Yaml:通过extrac进行传参,关联---接口关联封装(基于一个独立YAML的文件)

一:在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:这种传参和关联方法并不是最优解,建议用:极限封装成零代码的方式实现接口关联 

猜你喜欢

转载自blog.csdn.net/Moonlight_16/article/details/129081155