这一篇主要是关于文件的数据驱动。

一、通过json文件驱动

@ddt
class MyTest(unittest.TestCase): @file_data('test_data_list.json')
def test_data_list(self,value):
print(value) @file_data('test_data_dict.json')
def test_data_dict(self,value):
print(value)

二、通过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、时间、日期

import yaml

#写入yaml文件
# yaml.dump 将一个Python对象生成为yaml文档。参数一为要转为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文件
with open('dump.yml','r') as f:
data = yaml.load(f)
print(data)

yaml.dump([data,filehandle])

yaml.dump 将一个Python对象生成为yaml文档。参数一为要转为yaml文档的数据,参数二必须为一个已经打开的文件对象。

这里是将转成的yaml格式保存到文件里,以下是保存到文件里的数据。

yaml.load([filehandle])

yaml.load接收文件句柄,将yml文件中的数据转为Python的数据类型。

下面是输出的结果:

{'data': [2, 3, 4, 5], 'teacher': {'age': 20, 'name': 'bb'}, 'student': {'age': 20, 'love': {'ball': 'volleyball', 'book': 'Python'}, 'name': 'aa'}}

可以将yaml与ddt联合应用,将yaml作为数据存储,可以将test case写在yaml文件里。

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

打印的结果为:

[{'pass': {'case1': {'password': '', 'username': 'aa'}, 'case2': {'password': '', 'username': 'bb'}}}, {'fail': {'case3': {'password': '', 'username': 'cc'}}}]
<class 'list'>
  1. 组合使用后,通过yaml的数据来控制case的执行
  2. yaml文档的使用,使case维护更加方便快捷

pythonon ddt数据驱动二(json, yaml 驱动)的更多相关文章

  1. python webdriver 测试框架-数据驱动json文件驱动的方式

    数据驱动json文件的方式 test_data_list.json: [ "邓肯||蒂姆", "乔丹||迈克尔", "库里||斯蒂芬", & ...

  2. [ddt01篇]十年测试老鸟帮您解析:ddt数据驱动实现自动化测试入门基础应用

    一.什么是DDT数据驱动框架 ​ 全称:data driver test数据驱动测试框架,可以完美的应用于unittest框架实现数据驱动.ddt使用简介: 1.测试数据为多个字典的list类型 2. ...

  3. 【python接口自动化】- DDT数据驱动测试

    简单介绍 ​ DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据 ...

  4. 基于Python的接口自动化-unittest测试框架和ddt数据驱动

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...

  5. 如何快速掌握DDT数据驱动测试?

    1.前言 (网盗概念^-^)相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离, 这样的测试脚本设计模式称为数据驱动.(网盗结束)当我们测试某个网站的登录功能时,我们往往会使用不同的用 ...

  6. Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins

    本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...

  7. python自动化测试之DDT数据驱动

    时隔已久,再次冒烟,自动化测试工作仍在继续,自动化测试中的数据驱动技术尤为重要,不然咋去实现数据分离呢,对吧,这里就简单介绍下与传统unittest自动化测试框架匹配的DDT数据驱动技术. 话不多说, ...

  8. python+unittest+ddt数据驱动进行接口自动化测试

    所谓数据驱动测试,简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避 ...

  9. DDT数据驱动性能测试(一)

    DDT数据驱动性能测试(一) 一.csv数据文件设置 1.使用场景:测试过程中需要使用手机号码等大量数据时,用random函数随机生成数字:也可以使用Excel拖动生成一批手机号,也有可以从数据库中导 ...

随机推荐

  1. IMAP命令与分析

    https://www.cnblogs.com/crystalray/p/3304688.html Internet Mail Access Protocol(缩写为IMAP,以前称作交互邮件访问协议 ...

  2. 如何清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业

    解决方案 用于这个例子中的作业: - 导出作业 SCOTT.EXPDP_20051121 是一个正在运行的 schema 级别的导出作业 - 导出作业 SCOTT.SYS_EXPORT_TABLE_0 ...

  3. LeetCode 32 Longest Valid Parentheses(最长合法的括号组合)

    题目链接: https://leetcode.com/problems/longest-valid-parentheses/?tab=Description   Problem :已知字符串s,求出其 ...

  4. jquery scroll()滚动条事件

    最近做项目用了到scroll滚动条事件,花了很多时间做搜索,没有很好的先整理思考后再去搜索,做编码事件时,没有事先考虑清楚,理清思路,先做简单的测试成功后,再完成其他的实现. 1.scroll()事件 ...

  5. [工具] 将Sublime Text 3配置为Java代码编辑器

    新建编译器选项 选择菜单栏中的 Tools ——> Build System ——> New Build System ,输入: { "cmd": ["jav ...

  6. ftok函数

    ftok函数 系统建立IPC通讯(消息队列.信号量和共享内存)时必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型 头文件: #include <sys/types.h ...

  7. vue--循环列表

    <template> <div id="app"> <p v-for="x in list">{{x}}</p> ...

  8. 电话、地址、Email等常用正则表达式

    正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达 ...

  9. 【vue】---项目接口管理---【巷子】

    一.前言 在vue开发中,会涉及到很多接口的处理,当项目足够大时,就需要定义规范统一的接口 假设后端的文档分成了以下几个模块 1.发现模块 2.个人信息模块 3.商品模块 4.评论模块 ...... ...

  10. SQL语句的执行过程

    1.语法校验 如果在SQL计划缓存中没有对应的执行计划,服务器首先会对用户请求的SQL语句进行语法效验,如果有语法错误,服务器会结束查询操作,并用返回相应的错误信息给调用它的应用程序. 注意:此时返回 ...