目录
3、通过@pytest.mark.parametrize()实现yaml的数据驱动
1、yaml基本语法
1.1 yaml格式
以.yaml格式为后缀
键值对使用冒号结构表示key: value,冒号后面要加一个空格
1.2 yaml的基本语法
大小写敏感
使用缩进表示层级关系
缩进不允许使用tal,只允许使用空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
#表示注释
1.3 yaml的数据类型
对象:键值对的集合,又称为映射/哈希/字典
数组:一组按次序排列的值,又称为序列/列表
纯量:单个的,不可再分的值
1.4 yaml的使用
pip install pyyaml
import yaml
具体方法:
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中
yaml文件小demo:
-
name: zhangsan
age: 15
score:
- English: 90
- Chinese: 92
- Math: 95
-
name: 李四
age: 18
score:
- English: 90
- Chinese: 82
- Math: 85
2、封装读取yaml的方法
import yaml
class yamlUtil(object):
def __init__(self, yaml_file):
'''
通过init把文件传入到这个类中
:param yaml_file
'''
self.yaml_file = yaml_file
def read_yaml(self):
'''
读取yaml,将yaml反序列化,就是把yaml格式转换为dict格式
'''
with open(self.yaml_file, encoding="utf-8") as f:
value = yaml.load(stream=f, Loader=yaml.FullLoader) # 文件流,加载方式
print(value)
return value
# if __name__ == '__main__':
# yamlUtil("../../testcases/yaml/demo_yaml.yaml").read_yaml()
3、通过@pytest.mark.parametrize()实现yaml的数据驱动
import pytest
import os
from day20220702.demo_pytest.common.yaml_util.yamlUtil import yamlUtil
class Test_yaml(object):
dizhi = os.getcwd() + "\yaml\demo_yaml.yaml"
print(dizhi)
@pytest.mark.parametrize("args", yamlUtil(os.getcwd() + "\yaml\demo_yaml.yaml").read_yaml())
def test_yaml(self, args):
# print(args)
name = args['name']
age = args['age']
# english_score = args['score'][0]['English']