python ddt数据驱动二(json, yaml 驱动)

摘要:
1、 通过json文件从ddtimportddt驱动importancetest,file_data@ddtclassMyTest(unittest.TestCase):#test_data_列表中的数据。json是[1,2,3]@file_data('test_data_list.json')defest_data_list(self,value):print(value)#test_

一、通过json文件驱动

import unittest
from ddt import ddt, file_data

@ddt
class MyTest(unittest.TestCase):

# test_data_list.json里的数据是[1,2,3]
@file_data('test_data_list.json')
def test_data_list(self, value):
print(value)

# test_data_dict.json里的数据是{"name": "张三", "age": 19},k-v必须是双引号格式
@file_data('test_data_dict.json')
def test_data_dict(self, value):
print(value)


if __name__ == '__main__':
unittest.main(verbosity=2)

打印的结果为:
python ddt数据驱动二(json, yaml 驱动)第1张

二、通过yaml文件驱动
pip install pyyaml进行安装,直接import yaml,右键运行py文件,不报错,则为导入成功

PyYaml简介:
YAML是一种容易阅读、适合表示程序语言的数据结构、可用于不同程序间交换数据、丰富的表达能力和可扩展性、易于使用的语言,通过缩进或符号来表示数据类型
Yaml提供了多种方法,常用的为yaml.load和yaml.dump

它的基本语法规则如下:
1、大小写敏感
2、使用缩进表示层级关系
3、缩进时不允许使用Tab键,只允许使用空格
4、缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
5、# 表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样

PyYaml文件编写格式:
yaml文档除了可以通过dump进行转化之外,也可以根据yaml文档的格式进行编写

1、对象的一组键值对,使用冒号结构表示
2、一组减号开头的行,构成一个list
3、对象和数组可以结合使用,形成复合结构
4、~ 代表None
5、布尔类型直接写bool: True False

YAML支持的数据结构有三种:
1、对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)
2、数组:一组按次序排列的值,又称为序列(sequence)/列表(list)
3、纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

# 写入yaml文件
import yaml
with open('dump.yml', 'w') as f:
d = {
'student': {
'name': 'aa',
'age': 20,
'love': {
'ball': 'volleyball',
'book': 'python'
}
},
'teacher': {
'name': 'bb',
'age': 20
},
'data': [2, 3, 4, 5]
}
yaml.dump(d, f)

yaml.dump([data,filehandle])
yaml.dump将一个python对象生成为yaml文档,参数一为要转为yaml文档的数据,参数二必须为一个已经打开的文件对象,这里是将转成的yaml格式保存到文件里,以下是保存到文件(dump.yml)里的数据:
python ddt数据驱动二(json, yaml 驱动)第2张

# 加载yaml文件
with open('dump.yml', 'r') as f:
data = yaml.load(f)
print(data)

yaml.load([filehandle])
yaml.load接收文件句柄,将yml文件中的数据转为python的数据类型,下面是输出的结果:
python ddt数据驱动二(json, yaml 驱动)第3张

可以将yaml与ddt联合应用,将yaml作为数据存储,可以将test case写在yaml文件里:
python ddt数据驱动二(json, yaml 驱动)第4张
import unittest
from ddt import ddt, file_data


@ddt
class My_test(unittest.TestCase):

@file_data('dump.yml')
def test_data_yaml(self, value):
print(value)
print(type(value))


if __name__ == '__main__':
unittest.main(verbosity=2)

打印的结果为:
python ddt数据驱动二(json, yaml 驱动)第5张

1、组合使用后,通过yaml的数据来控制case的执行
2、yaml文档的使用,使case维护更加方便快捷

免责声明:文章转载自《python ddt数据驱动二(json, yaml 驱动)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IO实时监控命令iostat详解docker-Gitlab、GitLab Runner安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python基础(十三、综合应用

14.综合应用 - 名片管理系统 1)框架搭建 搭建名片管理系统框架结构 准备文件,确定文件名,保证能够在需要的位置编写代码 编写主运行循环,实现基本的用户输入和判断 (1)文件准备 ①新建cards_main.py,保存主程序功能代码 程序的入口 每一次启动名片管理系统都通过 main 这个文件启动 ②新建cards_tools.py,保存所有名片功能函...

python 删除多个同一后缀名文件(基于python 3.X)

import osdef remove(): filearray = [] address_Excel="E:\totally\FinancePDF" f_list = os.listdir(address_Excel)for fileNAME in f_list:# os.path.splitext():分离文件名与扩展名 if os.path.s...

Python字符串格式化

http://www.cnblogs.com/JerySpace/archive/2010/12/17/1909621.html 字符串的格式化 在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为 格式标记字符串 % 要输出的值组 其中,左边部分的”格式标记字符串“可以完全和c中...

吴裕雄--天生自然python学习笔记:python文档操作批量替换 Word 文件中的文字

我们经常会遇到在不同的 Word 文件中的需要做相同的文字替换,若是一个一个 文件操作,会花费大量时间 。 本节案例可以找出指定目录中的所有 Word 文件(包含 子目录),并对每一个文件进行指定的文字替换操作。 案例要求 把 replace 目录(包含子目录〉下所有 Word 文件中自甘“方法”都替换为“ method ” 下图中左图为 replaces...

Python Flask如何开发以太坊智能合约

将数据存储在数据库中是任何软件应用程序不可或缺的一部分。无论如何控制该数据库都有一个该数据的主控。区块链技术将数据存储到区块链网络内的区块中。因此,只要某个节点与网络同步,它们就会获得区块中数据的副本。因此,该技术中没有特定的数据主控。 在本教程中,我们将编写一份智能合约(我将进一步解释),以便在区块链上保留用户数据。我们将使用python web3(we...

利用Python将excel数据读取到word表格

在工作中可能需要两者对excel和word进行转化,今天介绍例如Python 将excel转word表格 看图,我需要将这份excel文档转word表格: 思路: 1、创建需要的表格; 2、读取excel文档; 3、将excel文档数据写入word表格对应的位置; 4、循环 需要用到的模块 创建表格,由于我需要的表格需要进行合并处理,所以使用merge...