IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> yaml配置文件的读和写 -> 正文阅读

[开发测试]yaml配置文件的读和写

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)

?写入和读取数据

?

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章           查看所有文章
加:2021-11-15 16:10:10  更:2021-11-15 16:10:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:47:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码