1、数据驱动的概念

在自动化测试中,需要把测试的数据分离到JSON,YAML等文件中。

2、YAML 的相关知识

YAML 入门教程 分类 编程技术 YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。YAML 的配置文件后缀为 .yml,如:runoob.yml 。基本语法 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 '#'表示注释

3、json数据驱动案例实战

1)在工程文件testDev下新建一个名为数据驱动的package;

2)在数据驱动包中新建login.json的文件;

3)在login.json文件在中编写如下代码:

1 {
2 "login":{"username": "cch","password":"admin"}
3 }

4)在数据驱动包中新建operationJson的python文件,并编写如下代码:

1 import json
2 def readJson():
3 return json.load(open("login.json")) #从login.json文件中读取数据
4 print(readJson())
5 print(type(readJson()))
6
7 print(readJson()["login"]["password"]) #从字典中获取登录的密码

5)运行operationJson文件中的代码后,得到如下结果:

 4、yaml数据驱动案例实战1

1)在工程文件testDev下新建一个名为数据驱动的package;

2)在数据驱动包中新建login.yaml的文件;

3)在login.yaml文件在中编写如下代码:

1 login:
2 username: 无涯 #注意冒号后边需空一格
3 password: admin
4
5 ali:
6 taobao:
7 shop:
8 name: 无涯课堂

4)在数据驱动包中新建operationYaml的python文件,并编写如下代码:

1 import yaml
2 def readYaml():
3 with open(file="login.yaml",mode="r",encoding="utf-8") as f:
4 return yaml.safe_load(f)
5 print(readYaml())
6 print(type(readYaml()))
7 print(readYaml()["login"]["password"])
8 print(readYaml()["ali"]["taobao"]["shop"]["name"])

5)运行operationYaml文件中的代码,得到如下结果:

4、yaml数据驱动案例实战2

1)在工程文件testDev下新建一个名为数据驱动的package;

2)在数据驱动包中新建data.yaml的文件;

3)在data.yaml文件在中编写如下代码:

1 ---      #注意须添加“---”表示列表
2 login:
3 username: 无涯
4 ---
5 login:
6 username: wuya

4)在数据驱动包中新建operationYaml的python文件,并编写如下代码:

1 import yaml
2 def readYamlList():
3 with open(file="data.yaml",mode="r",encoding="utf-8") as f:
4 return list(yaml.safe_load_all(f))
5 print(readYamlList())
6 print(type(readYamlList()))
7 print(readYamlList()[0]["login"]["username"]) #获取“无涯”
8 print(readYamlList()[1]["login"]["username"]) #获取“wuya”

5)运行operationYaml文件中的代码,得到如下结果:

 5、csv数据驱动案例实战1(列表形式)

1)在module包下面导入一个名为data.csv的文件,文件内容如下:

1 username,password,city 2 无涯,admin,中国西安 3 wuya,admin,西安

2)在module包下面新建一个名为csv学习的python文件,并编写以下代码:

 1 import csv
2 def readCsvList():
3 lists=[]
4 with open(file='data.csv',mode="r",encoding="utf-8") as f:
5 reader=csv.reader(f) #调用reader形成列表形式
6 next(reader) #不读取第一行
7 for item in reader:
8 lists.append(item)
9 return lists
10 print(readCsvList())

以上代码运行的结果为:

 6、csv数据驱动案例实战1(字典形式)

1)在module包下面导入一个名为data.csv的文件,文件内容如下:

1 username,password,city 2 无涯,admin,中国西安 3 wuya,admin,西安

2)在module包下面新建一个名为csv学习的python文件,并编写以下代码:

1 import csv
2 def readCsvDict():
3 lists=[]
4 with open(file="data.csv",mode="r",encoding="utf-8-sig") as f:#使用encoding="utf-8-sig",防止乱码
5 reader=csv.DictReader(f)
6 for item in reader:
7 lists.append(dict(item))
8 return lists
9 print(readCsvDict())

以上代码的运行结果为:

 7.excel数据驱动案例实战

1)在module包下面导入一个名为data.xlsx的文件,文件内容如下:

username password city
无涯 admin 中国西安
     

2)在module包下面新建一个名为excel学习的python文件,并编写以下代码:

1 import xlrd
2 def readExcel():
3 lists=[]
4 book=xlrd.open_workbook("data.xlsx") #读取excel文件
5 sheet=book.sheet_by_index(0) #操作sheet
6 for item in range(1,sheet.nrows):
7 lists.append(sheet.row_values(item))
8 return lists
9 print(readExcel())

以上代码的运行结果为:

python基础知识-day9(数据驱动)的更多相关文章

  1. python基础知识-day9(库学习)

    1.os学习 1 print(os.name) #获取操作系统 2 print(os.path.exists("D:\soft\python")) #判断路径是否存在 3 prin ...

  2. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  3. python基础知识(二)

    以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍

  4. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  5. python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  6. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  7. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  8. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  9. Python基础知识(五)

    # -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...

随机推荐

  1. MySQL远程连接、用户授权

    目录 MySQL远程连接 创建用户.授权 MySQL添加用户.删除用户.授权及撤销权限 MySQL可授予用户的执行权限 MySQL远程连接 远程连接 授权 常见权限表 相关库:mysql 相关表:us ...

  2. Java包装类,基本的装箱与拆箱

    我的博客 何为包装类 将原始类型和包装类分开以保持简单.当需要一个适合像面向对象编程的类型时就需要包装类.当希望数据类型变得简单时就使用原始类型. 原始类型不能为null,但包装类可以为null.包装 ...

  3. 震惊!<string.h>、<cstring>和<string>竟然可以这么用!

      为什么有这么多string相关的头文件呢,小编秦始皇今天带大家看一下: 1.[string.h]   定义如下:"C语言标准库中一个常用的头文件,在使用到字符数组时需要使用.[strin ...

  4. rabbitmq 安装延时队列插件rabbitmq-delayed-message-exchange

    1.下载rabbitmq-delayed-message-exchange(注意版本对应) 链接:https://github.com/rabbitmq/rabbitmq-delayed-messag ...

  5. 网络协议之:Domain name service DNS详解

    目录 简介 DNS的功能 DNS的组成 域名空间Domain name space Name servers DNS的工作流程 DNS资源记录 DNS消息的结构 总结 简介 现在是互联网的世界,大家从 ...

  6. [操作系统]LINUX进程状态说明

    R(task_running) : 可执行状态 只有在该状态的进程才可能在CPU上运行.而同一时刻可能有多个进程 处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的 ...

  7. 基于.NetCore开发博客项目 StarBlog - (4) markdown博客批量导入

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  8. delete-drop语句生成的存储过程

    问题: 开发时有时候需要对很多表进行操作. 例如:清空(删除)所有(某些)表,删除所有表某时间点之后导入的数据(类似于回滚) 解决方式: 对选定的表集合执行相同的查询条件(可为空),如果这个执行结果大 ...

  9. 软件包管理-yum私有仓库

    Linux软件安装 包的依赖关系: 软件包之间可能存在依赖关系,甚至循环依赖,即:A包依赖B包,B包依赖C包,C包依赖A包 安装软件包时,会因为缺少依赖的包,而导致安装包失败. 解决依赖包管理工具: ...

  10. Redis设计与实现2.1:数据库和事件

    数据库和事件 这是<Redis设计与实现>系列的文章,系列导航:Redis设计与实现笔记 数据库 数据库的结构定义在 redis.h/redisServer 这个结构体中,这个结构体有许多 ...