YAML 是一种以数据为中心的标记语言,是一种数据格式,扩展名以 .yml 或 .yaml 结尾;
yaml读取出来之后是一个:字典列表格式。
YAML 的语法如下:
- 使用缩进表示层级关系。
- 缩进时不允许使用 Tab 键,只允许使用空格。
- 缩进的空格数不重要,但同级元素必须左侧对齐。
- 大小写敏感
- 支持#注释
- 在yaml里,用on、1、true来表示true; off、0、false来表示false
- 空值可以用null或~表示
用途:
YAML 支持以下三种数据结构:
2.1:对象:键值对的集合,map对象,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
使用“key:[空格]value”的形式表示一对键值对(空格不能省略)
name: Lucy
2.2:数组(list):一组按次序排列的值,使用 - 表示列表,
又称为序列(sequence) / 列表(list)
-
name: 用户名密码登录接口-正向流程
request:
method: post
headers: null
url: https://xxxxxxxxxxxx/usersLogin/login
data:
phone: RwP%2BH9D9DTgD1Qf0j7J%2B3A==
password: kKe2zs5e7SF%2BuzDkBeFLLQ==
validate: None
-
feature: 模块名 (如:用户管理模块)
story: 接口名 (如:账号密码登录接口)
title: 用例标题
request: 请求
method: 请求方式
headers: 请求头
url: 请求路径
params:请求参数-url之后的参数
data:请求参数-表单数据
json:请求参数-json数据
files:请求参数-文件上传
validate: 响应断言
codes 断言状态码
equals 相等断言
contains 包含断言
db_equals 数据断言
2.3:字面量:单个的、不可拆分的值
使用
import yaml
pip install pyyaml
- yaml.load(f):将YAML文档转化成Python对象
- yaml.load_all(f):返回yaml文件中所有的yaml文档的对象生成一个迭代器,并使用for打印出来
- yaml.dump(c,f):将一个python对象生成为yaml文档,存放在f中
- yaml.dump_all(c,f):将多个python对象生成为yaml文档,存放在f中
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]
# 获取yaml文件中的数据:
# 3.get_obj_path() + yamlpath:使用的时候,是项目的路径 + yaml文件的路径
# 4.打开yaml文件,取别名为:f
# 5.获取yaml的文件流,将yaml文件中的数据返回
def read_yaml(yamlpath):
with open(get_obj_path()+yamlpath,mode='r',encoding='utf-8') as f:
value = yaml.load(stream=f,Loader=yaml.FullLoader)
return value
if __name__ == '__main__':
print(get_obj_path())
print(read_yaml('testcase/login.yaml'))
1.如果有接口关联,那么在下一个接口里无法直接调用python里面的方法,而是需要在下一个接口里通过调用方法去覆盖原值
2.如何在yaml中调用随机数的方法呢?
3.一个接口对应一个yaml,如果一个接口中有很多反例,那么yaml里会有很多的数据,该怎么优化?
4.断言