news 2026/5/1 7:20:14

API 接口自动化测试详细图文教程学习系列15--项目实战演练2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
API 接口自动化测试详细图文教程学习系列15--项目实战演练2

测试学习记录,仅供参考!

项目实战演练--封装方法

封装文件写入方法

1、 在项目根目录下新建一个名称为“configs”的目录文件,用于存放配置文件,继续在该目录文件下新建名称为“setting.py”的 Python 文件,在 “setting.py” 文件输入以下内容;

# 导包 import os import sys # 使用os.path.dirname获取当前文件所在目录的父目录--也就是说获取当前文件的上一级目录 # 这里需要拿到项目的根目录,所以再叠加一次 DIR_PATH = os.path.dirname(os.path.dirname(__file__)) # 找到项目根目录之后需要把它加到 搜索模块里面去 # 把项目根目录添加到系统的路径列表中--目的是:确保可以通过导入模块的方式找到项目根目录 sys.path.append(DIR_PATH)

2、在项目根目录下新建一个自定义名称的 YAML 格式文件(例如文件名称为“extract.yaml”),用于储存接口返回值的提取结果, 暂时不需要输入任何内容(为空即可);

3、 修改 configs 目录下“setting.py” 文件内容,新建一个字典变量来定义某个需要的文件路径,以便后续使用(可自行打印出文件路径进行测试验证,查看是否准确;测试验证后记得注释掉);

# 导包 import os import sys # 使用os.path.dirname获取当前文件所在目录的父目录--也就是说获取当前文件的上一级目录 # 这里需要拿到项目的根目录,所以再叠加一次 DIR_PATH = os.path.dirname(os.path.dirname(__file__)) # 找到项目根目录之后需要把它加到 搜索模块里面去 # 把项目根目录添加到系统的路径列表中--目的是:确保可以通过导入模块的方式找到项目根目录 sys.path.append(DIR_PATH) # 新建一个字典 FILE_PATH 变量来定义文件路径 FILE_PATH = { # 这样做的好处是:其他地方需要用到时可直接引用 setting.py模块 'extract' : os.path.join(DIR_PATH, 'extract.yaml') } # 打印出文件路径--通过字典key值可以拿到文件路径 # print(FILE_PATH['extract'])

4、修改 handle_data 软件包下“yaml_handler.py” 文件内容,封装一个写入方法;

# 导包 import yaml import os from configs.setting import FILE_PATH # 定义函数 read_yaml--传一个参数--要读取哪个yaml文件 def read_yaml(yaml_path): """ 读取yaml文件数据 :param yaml_path: :return: """ # 读取文件最好加上异常处理 try: # 使用open打开文件--使用这个后面可以不用手动关闭,它调用完之后会自动关闭文件句柄 # 打开哪个文件、权限、编码格式 with open(yaml_path, 'r', encoding='utf-8') as file: # 直接调用yaml.safe_load()加载文件file data = yaml.safe_load(file) # return返回 return data except UnicodeDecodeError: print(f"{yaml_path}文件编码格式错误,--尝试使用utf-8去解码YAML文件发送错误,请确保你的yaml文件是utf-8格式!") except Exception as e: print(f"读取{yaml_path}文件时出现异常,原因:{e}") # 定义一个方法 write_yaml--(file_path 写入路径,value 写入一个数据) # 这个写入方法是专门把数据写到创建的extract.yaml中 def write_yaml(value): # 这里做自动化测试,一般只需要固定写入,传一个参数就行,按需自行选择 """ yaml文件数据写入 :param value:(dict)写入的数据,必须为字典格式 :return: """ # 往哪里写入数据--先引进模块 configs.setting --获取文件路径--不至于后面把路径写死 file_path = FILE_PATH['extract'] # 打印查看文件路径--看它有没有拿到 print(file_path) # 判断这个文件 file_path 路径不存在时--引进 os 模块 if not os.path.exists(file_path): # 若不存在,调用 os.system() 再创建一个file_path文件路径 os.system(file_path) # 调试查看一下新写的 write_yaml()方法有没有生效 if __name__ == '__main__': # 调用 write_yaml--先传一个空 res = write_yaml(value=None) # 打印结果:None print(res)

5、如若此时在项目根目录下没有 “extract.yaml”文件,再执行 yaml_handler.py 文件,会运行失败,控制台报错显示提醒乱码(可自行删除文件测试验证);

6、继续修改 handle_data 软件包下“yaml_handler.py” 文件内容,优化写入方法,假如项目根目录下不存在 extract.yaml 文件,则会自动创建一个;

# 导包 import yaml import os from configs.setting import FILE_PATH # 定义函数 read_yaml--传一个参数--要读取哪个yaml文件 def read_yaml(yaml_path): """ 读取yaml文件数据 :param yaml_path: :return: """ # 读取文件最好加上异常处理 try: # 使用open打开文件--使用这个后面可以不用手动关闭,它调用完之后会自动关闭文件句柄 # 打开哪个文件、权限、编码格式 with open(yaml_path, 'r', encoding='utf-8') as file: # 直接调用yaml.safe_load()加载文件file data = yaml.safe_load(file) # return返回 return data except UnicodeDecodeError: print(f"{yaml_path}文件编码格式错误,--尝试使用utf-8去解码YAML文件发送错误,请确保你的yaml文件是utf-8格式!") except Exception as e: print(f"读取{yaml_path}文件时出现异常,原因:{e}") # 定义一个方法 write_yaml--(file_path 写入路径,value 写入一个数据) # 这个写入方法是专门把数据写到创建的extract.yaml中 def write_yaml(value): # 这里做自动化测试,一般只需要固定写入,传一个参数就行,按需自行选择 """ yaml文件数据写入 :param value:(dict)写入的数据,必须为字典格式 :return: """ # 往哪里写入数据--先引进模块 configs.setting --获取文件路径--不至于后面把路径写死 file_path = FILE_PATH['extract'] # 打印查看文件路径--看它有没有拿到 print(file_path) # 判断这个文件 file_path 路径不存在时--引进 os 模块 if not os.path.exists(file_path): # 若在项目根目录下不存在extract.yaml文件,则新建一个 with open(file_path, 'w', encoding='utf-8'): pass # 调试查看一下新写的 write_yaml()方法有没有生效 if __name__ == '__main__': # 调用 write_yaml--先传一个空 res = write_yaml(value=None) # 打印结果:None print(res)

7、持续修改 handle_data 软件包下“yaml_handler.py” 文件内容,给写入方法添加异常处理;

# 导包 import yaml import os from configs.setting import FILE_PATH # 定义函数 read_yaml--传一个参数--要读取哪个yaml文件 def read_yaml(yaml_path): """ 读取yaml文件数据 :param yaml_path: :return: """ # 读取文件最好加上异常处理 try: # 使用open打开文件--使用这个后面可以不用手动关闭,它调用完之后会自动关闭文件句柄 # 打开哪个文件、权限、编码格式 with open(yaml_path, 'r', encoding='utf-8') as file: # 直接调用yaml.safe_load()加载文件file data = yaml.safe_load(file) # return返回 return data except UnicodeDecodeError: print(f"{yaml_path}文件编码格式错误,--尝试使用utf-8去解码YAML文件发送错误,请确保你的yaml文件是utf-8格式!") except Exception as e: print(f"读取{yaml_path}文件时出现异常,原因:{e}") # 定义一个方法 write_yaml--(file_path 写入路径,value 写入一个数据) # 这个写入方法是专门把数据写到创建的extract.yaml中 def write_yaml(value): # 这里做自动化测试,一般只需要固定写入,传一个参数就行,按需选择 """ yaml文件数据写入 :param value:(dict)写入的数据,必须为字典格式 :return: """ # 往哪里写入数据--先引进模块 configs.setting --获取文件路径--不至于后面把路径写死 file_path = FILE_PATH['extract'] # 打印查看文件路径--看它有没有拿到 # print(file_path) # 判断这个文件 file_path 路径不存在时--引进 os 模块 if not os.path.exists(file_path): # 若在项目根目录下不存在extract.yaml文件,则新建一个 with open(file_path, 'w'): pass # 定义一个空的变量--因为作用域问题,若不在最外层定义空变量,file.close()则会显示file黄色下滑波浪线提示警告 file = None # 添加异常处理 try: # 使用open打开文件--文件名,权限 a 追加写入,编码格式--赋值给file file = open(file_path, 'a', encoding='utf-8') # 针对写入的 value 数据进行判断--写入的value是否为字典类型 if isinstance(value, dict): # 若value是字典类型--直接使用yaml.dump()调用yaml文件 # 把参数传给它 value,可以写入中文,按顺序去写入 write_data = yaml.dump(value, allow_unicode=True, sort_keys=False) # 调用文件file--使用write()写入--数据write_data file.write(write_data) else: # 若不是字典类型,则打印 print("写入的数据必须为字典类型!") except Exception as e: print(f"写入yaml文件出现异常,原因:{e}") finally: # 不管是否有异常,都执行关闭文件操作--因为前面使用的是 open--所以需要手动关闭文件句柄 file.close() # 调试查看一下新写的 write_yaml()方法有没有生效 if __name__ == '__main__': # 调用 write_yaml--先传一个空 res = write_yaml(value=None) # 打印结果:None print(res)

鼠标光标移动到“yaml.dump()”方法上, 按住“CTRL”键再鼠标单击可自行查看对应方法详情;

往上滑动查看“dump_all()”方法,里面有各种参数可供参考;

  • allow_unicode=True -- 控制是否可以写入中文,默认allow_unicode=None--为None时,不能写入中文,这里设置为True,写入时可以写入中文;
  • sort_keys=False -- 按顺序去写入,默认sort_keys=True--这里设置为False;sort_keys=True 指示编码器按照字典排序 (a 到 z) 输出。如果是字典类型的 Python 对象,将关键字按照字典排序。

写入字典类型数据

8、 此时在项目根目录下“extract.yaml”文件里面为空,没有任何数据信息;

9、 在“yaml_handler.py”文件'__main__'主函数测试调试传入字典格式数据后执行查看结果;

# 调试查看一下新写的 write_yaml()方法有没有生效 if __name__ == '__main__': # 调用 write_yaml--传入一个字典格式 res = write_yaml({"name":"ZhangSan"}) # 打印结果:None print(res)

若 yaml_handler.py 文件执行成功后,则会在 extract.yaml 文件中写入字典格式数据;

封装清空文件方法

10、 优化 handle_data 软件包下“yaml_handler.py” 文件内容,封装一个清空文件方法;

# 导包 import yaml import os from configs.setting import FILE_PATH # 定义函数 read_yaml--传一个参数--要读取哪个yaml文件 def read_yaml(yaml_path): """ 读取yaml文件数据 :param yaml_path: :return: """ # 读取文件最好加上异常处理 try: # 使用open打开文件--使用这个后面可以不用手动关闭,它调用完之后会自动关闭文件句柄 # 打开哪个文件、权限、编码格式 with open(yaml_path, 'r', encoding='utf-8') as file: # 直接调用yaml.safe_load()加载文件file data = yaml.safe_load(file) # return返回 return data except UnicodeDecodeError: print(f"{yaml_path}文件编码格式错误,--尝试使用utf-8去解码YAML文件发送错误,请确保你的yaml文件是utf-8格式!") except Exception as e: print(f"读取{yaml_path}文件时出现异常,原因:{e}") # 定义一个方法 write_yaml--(file_path 写入路径,value 写入一个数据) # 这个写入方法是专门把数据写到创建的extract.yaml中 def write_yaml(value): # 这里做自动化测试,一般只需要固定写入,传一个参数就行,按需自行选择 """ yaml文件数据写入 :param value:(dict)写入的数据,必须为字典格式 :return: """ # 往哪里写入数据--先引进模块 configs.setting --获取文件路径--不至于后面把路径写死 file_path = FILE_PATH['extract'] # 打印查看文件路径--看它有没有拿到 # print(file_path) # 判断这个文件 file_path 路径不存在时--引进 os 模块 if not os.path.exists(file_path): # 若在项目根目录下不存在extract.yaml文件,则新建一个 with open(file_path, 'w'): pass # 定义一个空的变量--因为作用域问题,若不在最外层定义空变量,file.close()则会显示file黄色下滑波浪线提示警告 file = None # 添加异常处理 try: # 使用open打开文件--文件名,权限 a 追加写入,编码格式--赋值给file file = open(file_path, 'a', encoding='utf-8') # 针对写入的 value 数据进行判断--写入的value是否为字典类型 if isinstance(value, dict): # 若value是字典类型--直接使用yaml.dump()调用yaml文件 # 把参数传给它 value,可以写入中文,按顺序去写入 write_data = yaml.dump(value, allow_unicode=True, sort_keys=False) # 调用文件file--使用write()写入--数据write_data file.write(write_data) else: # 若不是字典类型,则打印 print("写入的数据必须为字典类型!") except Exception as e: print(f"写入yaml文件出现异常,原因:{e}") finally: # 不管是否有异常,都执行关闭文件操作--因为前面使用的是 open--所以需要手动关闭文件句柄 file.close() # 定义一个清空文件方法 clear_yaml def clear_yaml(): """ 清空 extract.yaml 文件数据 :return: """ # 调用with open()--文件路径,权限 w ,编码格式 with open(FILE_PATH['extract'], 'w', encoding='utf-8') as f: # 调用一个方法 f.truncate()--调用这个方法就会清空yaml文件 f.truncate() # 调试查看一下新写的 write_yaml()方法有没有生效 if __name__ == '__main__': # 调用 write_yaml 写入数据 write_yaml({"name": "ZhangSan"}) # 调用 clear_yaml()方法清空文件 clear_yaml()

11、 在“yaml_handler.py”文件'__main__'主函数测试验证;

运行成功后再次打开查看 extract.yaml 文件,可以发现写入的数据信息已经成功被清空。

未完待续。。。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:19:25

LLM动态评估:CSD框架解析与实践指南

1. 项目背景与核心价值在自然语言处理领域,大型语言模型(LLM)的评估一直是学术界和工业界关注的焦点。传统的静态评估方法存在明显的局限性——它们往往在固定数据集上测试模型性能,无法全面反映模型在真实场景中的动态表现。这就…

作者头像 李华
网站建设 2026/5/1 7:15:47

ComfyUI-AnimateDiff-Evolved:解锁无限动画创作的专业指南

ComfyUI-AnimateDiff-Evolved:解锁无限动画创作的专业指南 【免费下载链接】ComfyUI-AnimateDiff-Evolved Improved AnimateDiff for ComfyUI and Advanced Sampling Support 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-AnimateDiff-Evolved Comf…

作者头像 李华
网站建设 2026/5/1 7:14:27

3步快速上手:Windows虚拟串口驱动完全指南

3步快速上手:Windows虚拟串口驱动完全指南 【免费下载链接】com0com Null-modem emulator - The virtual serial port driver for Windows. Brought to you by: vfrolov [Vyacheslav Frolov](http://sourceforge.net/u/vfrolov/profile/) 项目地址: https://gitco…

作者头像 李华
网站建设 2026/5/1 7:08:22

# 冷凝水回收器节能效益深度分析:从原理到真实案例

**摘要**:蒸汽冷凝水回收是工业节能的重要手段。本文从热力学原理出发,结合真实工厂案例,详细分析冷凝水回收的经济效益,为工业企业提供选型参考。## 一、冷凝水回收的热力学基础### 1.1 冷凝水的形成与特性蒸汽在换热设备中释放潜…

作者头像 李华