Pytest项目_day15(yaml)

YAML

  • YAML是一个对所有编程语言都很友好的数据序列化标准,它是一种直观的能够被电脑识别的数据序列化格式,是一种可读性高且容易被人类阅读的脚本语言

  • YAML语言的本质是一种通用的数据串行化格式

  • 适用场景

    • 可以直接序列化为数组、字典
    • 解析成本低
    • 专门写配置文件的语言,比JSON格式方便,比ini文档功能更强
  • 支持的三种数据结构

    • 对象:键值对的集合,例如:映射、哈希、字典
    • 数组:一组按次序排列的值,例如:序列、列表
    • 纯量:单个的,不可再分的值,例如:字符串、float、int
  • 建议将数据都放在YAML中,而测试用例中只保留流程

YAML字典的写法

  • 最外层的key顶格,后面value里的字典,空两格,不同的键值对之间换行隔开

YAML数组的写法

  • 最外层的key顶格,后面value里的数组空两格,然后跟-再空一格后跟元素,元素之间换行隔开
  • 元素也可以是一个字典,但是字典和字典之间需要用-和换行隔开
  • 元素也可以是一个数组,数组之间也需要用-和换行隔开

示例

  • 注意,herohero2等价,我们可以用yaml字典的写法可以加{},也可以不加,但是加{}时需要加
  • YAML不需要写" "

读取yaml文件

  • 首先需要安装pyyaml依赖,但是导入时使用yaml
  • 然后需要创建文件流,可以使用open()读取yaml文件
  • 接着需要把文件流用yaml依赖打开
  • 稍复杂的yaml数据

YAML + parametrize,实现参数化

单参数单次循环

  • 我们首先需要在utils目录中定义好读取yaml数据的方法
  • 此处的路径,我们需要动态获取,可以根据以下的三个方法获得
    • os.path.realpath(_ _file_ _)是可以获取当前文件的绝对路径
    • os.path.dirname()是可以获取上一级目录的目录名
    • os.path.join()可以将三个字符串凭借起来,中间用/连接
  • 其次我们可以在测试方法中导入这个方法,并在装饰器parametrize中将yaml数据作为参数值传给自定义的参数
  • 注意:参数值需要是可迭代类型
  • yamlheros_name的数据如下:

多参数多次循环

  • 我们需要写一个符合以下形式的yaml代码
  • 注意,列表内的每一个元素都需要用-开头,且后要空一格
  • 这里一个大列表里由两个子列表,所以每个子列表前都需要加上-,且子列表内的每个元素也需要加上-,如下:
  • 而我们的测试用例可以这么写,用两个自定义参数来接收返回值:
相关推荐
2601_962077609 小时前
从零搭建Python接口自动化测试框架:pytest+requests实战指南
python·pytest·接口自动化·requests·框架搭建
weixin_4407305011 小时前
pytest结合allure生成html测试报告(step、story、severity、screenshot)
前端·html·pytest·allure报告
拜托多多指教12 小时前
【Pytest框架学习】分层架构
python·pytest
2601_9622998812 小时前
python脚本如何单元测试
python·单元测试·pytest·unittest·mock对象
Tizzy JJ1 天前
Python + pytest 接口自动化测试框架实战:从零搭建企业级项目骨架
开发语言·python·pytest
Tizzy JJ1 天前
接口自动化测试实战:如何围绕真实业务场景设计高质量用例
python·自动化·pytest
测试老哥2 天前
Pytest 之assert断言的使用
自动化测试·软件测试·python·测试工具·测试用例·pytest·接口测试
边吃番茄边敲代码6 天前
从本地工具到 MCP:给 Agent 接入独立工具服务,并补齐自动化测试
人工智能·python·功能测试·ai·单元测试·pytest
SugarAbsinthe6 天前
【Agent开发实习小记】从人工逐条验证到自动化验收:新 API 接入前的效率瓶颈
人工智能·python·自动化·pytest