> 文章列表 > 自动化数据驱动?最全接口自动化测试yaml数据驱动实战,看这一篇就够了

自动化数据驱动?最全接口自动化测试yaml数据驱动实战,看这一篇就够了

引言:在自动化测试的世界里,数据是灵魂,接口是桥梁。当这两种元素结合在一起时,就诞生了一种新的测试艺术——YAML数据驱动。YAML,这个轻量级的数据序列化格式,不仅能优雅地表示复杂的数据结构,还能作为测试用例的数据来源,使得测试脚本更加灵活和易于管理。在这篇文章中,我们将一起探索YAML数据驱动的强大之处,以及如何在自动化测试项目中巧妙地运用它。

相关问题与答案

1. YAML数据驱动适合哪些场景?

YAML数据驱动特别适合于需要频繁变更测试数据或者测试用例较多的项目。例如,当软件中存在多个接口,而这些接口依赖于不同的测试数据时,使用YAML数据驱动可以大大简化数据的管理和脚本的编写。

2. 如何创建和使用YAML数据文件

创建YAML数据文件非常简单,通常使用文本编辑器即可。例如,使用JSON格式来存储测试数据:

{
  "users": [
    {
      "name": "Alice",
      "age": 25
    },
    {
      "name": "Bob",
      "age": 30
    }
  ]
}

使用时,可以通过编程语言中的YAML解析库来读取这些数据,然后动态地设置到自动化测试脚本中。

3. 有哪些流行的YAML解析库?

有许多流行的编程语言都提供了YAML解析库,例如Python的PyYAML、JavaScript的js-yaml等。这些库可以帮助开发者轻松地读取和生成YAML文件中的数据。

4. YAML数据驱动的优势是什么?

YAML数据驱动的优势主要体现在以下几个方面:
- 数据和脚本分离,提高了代码的可读性和可维护性;
- 数据集中管理,便于统一修改和更新;
- 灵活性高,可以根据不同的测试场景快速调整数据;
- 易于理解和编写,尤其对于习惯了使用配置文件的用户。

5. 在使用YAML数据驱动时需要注意哪些问题?

在使用YAML数据驱动时,需要注意以下几点:
- 确保YAML文件格式正确,避免因为格式错误导致解析失败;
- 对于数据的关键字和值,要小心避免与Python的关键字冲突;
- 注意YAML文件中的注释和特殊字符的处理;
- 在自动化脚本中,要确保正确解析和使用YAML文件中的数据。

通过以上问题的探讨,我们可以看到,YAML数据驱动不仅提高了自动化测试的灵活性和效率,还使测试数据的管理变得更加简单和直观。在自动化测试的世界中,YAML数据驱动无疑是一个强大的工具,值得每个测试开发者掌握和利用。

自动化数据驱动?最全接口自动化测试yaml数据驱动实战,看这一篇就够了

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)

前言

我们在做自动化测试的时候,通常会把配置信息和测试数据存储到特定的文件中,以实现数据和脚本的分离,从而提高代码的易读性和可维护性,便于后期优化。

而配置文件的形式更是多种多样,比如:ini、yaml、json、toml、py、xml、properties 等。

Python接口自动化测试:https://www.bilibili.com/video/BV16G411x76E/

YAML是一种轻量级的文本格式,可以用于存储结构化数据,非常适合用作测试数据。

在使用YAML数据驱动进行自动化测试时,通常需要准备一个或多个YAML文件,其中包含了测试用例的数据和预期结果。测试脚本会读取这些文件,并根据文件中的数据来执行对应的测试步骤,然后验证实际结果与预期结果是否一致。

下面我们就来详探接口自动化测试中的 YAML 数据驱动

1、什么是 YAML

YAML:YAML Ain’t a Markup Language,翻译过来就是YAML 不是一种标记语言。

它是一种以数据为中心的标记语言,比 XML 和 JSON 更适合作为配置文件。

YAML 的配置文件后缀为.yml 或.yaml,如:caituotuo.yml 或 caituotuo.yaml。

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲等。

2、YAML 语法

1)基本语法
使用缩进表示层级关系;
缩进不允许使用 tab,只允许空格(官方说法不允许使用 tab,当然如果你使用 tab 在某些地方也是可以的,例如在 PyCharm 软件上);
缩进的空格数不重要,只要相同层级的元素左对齐即可;
大小写敏感;
前面加上 #表示注释;

req:username: xxxxxx # 这是姓名gender: Boyip: blog: www.xxxxxx.com
res:status: 1code: 200

2)数据类型
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值,又称字面量

纯量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、Null、日期等,纯量直接写在键值对的 value 中即可。

字符串:
默认情况下字符串是不需要使用单引号或双引号的

username: 张三

当然使用双引号或者单引号包裹字符也是可以的

username: 'Hello world 张三'
username: "Hello world 张三"

字符串可以拆成多行,每一行会被转化成一个空格

# 字符串可以拆成多行,每一行会被转化成一个空格 '测试 张三'
username3: 测试张三

布尔值:

boolean:- TRUE  #true,True都可以- FALSE  #false,False都可以# {'boolean': [True, False]}

数字:

float:- 3.14- 6.8523015e+5  #可以使用科学计数法
int:- 123- 0b1010_0111_0100_1010_1110    #二进制表示# {'float': [3.14, 685230.15], 'int': [123, 685230]}

Null:

null:nodeName: 'node'parent: ~  #使用~表示nullparent2: None  #使用None表示nullparent3: null  #使用null表示null# {None: {'nodeName': 'node', 'parent': None, 'parent2': 'None', 'parent3': None}}

时间和日期:

date:- 2023-04-18    #日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime:- 2023-04-18T15:09:30+08:00    #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区# {'date': [datetime.date(2023, 4, 18)], 'datetime': [datetime.datetime(2023, 4, 18, 15, 9, 30, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))]}

对象
使用 key:[空格]value 的形式表示一对键值对(空格不能省略),例如:blog: caituotuo.top。

行内写法:

key: {key1: value1, key2: value2, ...}

普通写法,使用缩进表示对象与属性的层级关系:

key: child-key: valuechild-key2: value2

数组
以 - 开头的行表示构成一个数组。

普通写法:

name:- 测试- 张三