yaml配置文件的读和写
1、安装PyYAML
2、建一个空的yaml文件
数据如下:
- a: 5 b: 2 c: 3 - a: 8 b: 2 c: 6
3、打开yaml文件,读取yaml文件数据
import pytest
import allure
import yaml
from core.cal import Cal
from tests.contest import calc_init
def load_data(path='data.yaml'):
with open(path) as f:
data=yaml.safe_load(f)
keys=','.join(data[0].keys())
values=[d.values() for d in data]
data={'keys':keys,'values':values}
return data
@allure.feature('算法模块')
class Testcal():
data=load_data()
def setup_class(self):
self.cal=Cal()
# data = load_data()
# @pytest.mark.parametrize('a,b,c',[(5,2,3),(8,2,6),(1,2,9)])
@allure.story('加法测试用例')
@pytest.mark.parametrize(data['keys'], data['values'])
def test_sub(self,a,b,c):
assert self.cal.sub(a,b)==c
#正常值计算
@allure.story('除法测试用例')
@pytest.mark.parametrize('a,b,c',[(2,1,2),(0.2,0.1,2),(2,0.2,0.0)])
def test_div(self,a,b,c):
assert self.cal.div(a,b)==c
#异常值计算
@pytest.mark.parametrize('a,b',[(1,0),(0.2,0)])
@allure.story('除法测试用例')
def test_div(self,a,b):
with allure.step('除数为0'):
print("除数为0")
with pytest.raises(ZeroDivisionError):
assert self.cal.div(a,b)
def test_add(self,calc_init):
assert calc_init.add(2,1)==3
方法引用:
data=load_data()
参数化引用
@pytest.mark.parametrize(data['keys'], data['values'])
将yaml文件的写入和读取进行封装,方便调用
安装:pip install ruamel.yaml
2、新建confing文件,创建conf.yaml文件
3、 yaml文件的写入方法和读取方法进行封装
import os
from ruamel import yaml
class WRYaml:
""" yaml文件的读和写 """
def __init__(self):
""" 指定yaml文件的路径 """
self.configpath = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'config')
def read_yaml(self, yaml_file='conf.yaml'):
""" 读取yaml里面里面的数据"""
try:
with open(os.path.join(self.configpath, yaml_file), "r", encoding='utf8') as f:
return yaml.load(f, Loader=yaml.Loader)
except Exception as error:
print(f'读取yaml失败,错误如下:{error}')
return False
def write_yaml(self, data, yaml_file='conf.yaml', mode='w'):
""" 往yaml里面写入数据
yamlFile:yaml文件名
data:要写入的数据
mode:写入方式: w,覆盖写入, a,追加写入
将原数据读取出来,如果没有要加入的key,则创建一个,如果有,则执行key下面的数据修改
"""
try:
old_data = self.read_yaml(yaml_file) or {}
for data_key, data_value in data.items():
if not old_data.get(data_key):
old_data.setdefault(data_key, {})
for value_key, value_value in data_value.items():
old_data[data_key][value_key] = value_value
with open(os.path.join(self.configpath, yaml_file), mode, encoding="utf-8") as f:
yaml.dump(old_data, f, Dumper=yaml.RoundTripDumper)
return True
except Exception as error:
print(f'yaml文件写入失败,错误如下:\n{error}')
return False
if __name__ == "__main__":
wryaml = WRYaml()
# 写入数据文件
data = {
'test': {'AAA': 134511, 'BBB': 333,'CCC':999}
}
print(wryaml.write_yaml(yaml_file='conf.yaml', data=data))
# 读取数据文件
print(wryaml.read_yaml('conf.yaml'))
# data1 = wryaml.read_yaml('conf.yaml')
# # lis = [i['a'] for i in data1]
# # print(lis)
写入和读取数据
版权声明:本文为feifei_888888原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。