当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/14338.html

相关文章:

  • vue - vue中对Vant日历组件(calendar)的二次封装
  • 详解C++的类型转换
  • NLP文本自动生成介绍及Char-RNN中文文本自动生成训练demo
  • Teradata 离场,企业数据分析平台如何应对变革?
  • QWebEngineView-官翻
  • 网络安全高级攻击
  • 优思学院:六西格玛中的水平对比方法是什么?
  • UVa 690 Pipeline Scheduling 流水线调度 二进制表示状态 DFS 剪枝
  • 【ArcGIS Pro二次开发】(6):工程(Project)的基本操作
  • Qt OpenGL(四十)——Qt OpenGL 核心模式-雷达扫描效果
  • 群智能优化算法求解标准测试函数F1~F23之种群动态分布图(视频)
  • vue-axios封装与使用
  • 重要节点排序方法
  • 【2.20】动态规划 +项目 + 存储引擎
  • 触摸屏单个按键远程控制led
  • JVM12 class文件
  • 等保三级认证基本要求
  • Python 基本数据类型(一)
  • win10 环境变量及其作用大全
  • @Valid与@Validated的区别
  • 【LeetCode】剑指 Offer 09. 用两个栈实现队列 p68 -- Java Version
  • Java并发编程面试题——JUC专题
  • CAS概述
  • Ansys Zemax / SPEOS | 光源文件转换器
  • PRML笔记2-关于回归参数w的先验的理解
  • Selenium原理
  • Disconf、Apollo和Nacos分布式配置框架差异对比
  • 高新技术企业认定条件条件 高企认定要求
  • 华为OD机试 - 新学校选址(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
  • 二进制部署K8S