数据驱动概念
数据驱动定义:
数据驱动: 是以数据来驱动整个测试用例的执行, 也就是测试数据决定测试结果
数据驱动的特点
- 可以把数据驱动理解为一种模式或者一种思想。
- 将用户把关注点放在对测试数据的构建和维护上, 而不是直接维护脚本, 可以利用同样的过程对不同的数据输入进行测试。
- 数据驱动的实现要依赖参数化的技术
数据驱动 = 数据存储文件+数据读取工具+参数化技术
传入数据的方式(测试数据的来源)
- 直接定义在测试脚本中(简单直观, 但代码和数据未实现真正的分离, 不方便后期维护)
- 从文件读取数据, 如JSON、 excel、 xml、 txt、csv等格式文件
- 从数据库中读取数据
- 直接调用接口获取数据源
- 本地封装一些生成数据的方法
JSON操作
JSON介绍
JSON的全称是”JavaScript Object Notation”, 是JavaScript对象表示法, 它是一种基于文本, 独立于语言的轻量级数据交换格式
JSON特点
- JSON是纯文本
- JSON具有良好的自我描述性, 便于阅读和编写
- JSON具有清晰的层级结构
- 有效地提升网络传输效率
JSON语法规则
- 大括号保存对象
- 中括号保存数组
- 对象数组可以相互嵌套
- 数据采用键值对表示
- 多个数据由逗号分隔
JSON在线解析及格式化验证 - JSON.cn
JSON值
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
示例:
{
"name":"tom",
"age":18,
"isMan":true,
"school":null,
"address":{
"country":"中国",
"city":"江苏苏州",
"street":"科技园路"
},
"numbers":[2,6,8,9],
"links":[
{
"name":"Baidu",
"url":"http://www.baidu.com"
},
{
"name":"TaoBao",
"url":"http://www.taobao.com"
}
]
}
Json与字典之间的转换
字典转换为json
方法:dumps()
步骤:
1、导包
import json
2、调用方法
json.dumps(data_dict)
示例:
# 导包
import json
"""1. 将python字典转为 json 字符串"""
# 定义字典
data_dict = {"name": "张三","age": 18}
print("未转换之前类型:", type(data_dict))
# 字典转换为字符串
data_json = json.dumps(data_dict)
print(data_json)
print("转换之后类型:", type(data_json))
json转换为字典
方法:loads
步骤:
1、导包
import json
2、调用方法
json.loads(data_json)
示例
# 定义json字符串
data_json = '{"name":"张三", "age":18}'
# 错误写法,注意:键名必须是双引号
# data = "{'name':'张三', 'age':18}"
print("未转换之前类型:", type(data_json))
# json字符串转换为字典
data_dict = json.loads(data_json)
print(data_dict)
print("转换之后类型:", type(data_dict))
json的读写
读取json文件
方法:load(文件流)
# 导包
import json
#获取文件流病调用load方法
with open('data.json',encoding = 'UTF-8') as f:
# 返回的数据类型为字典或列表
data = json.load(f)
示例:
"""
目标:读取
方法:load
"""
# 导包 json
import json
# 获取文件流 并调用 load方法
with open("../data/login.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data)
写入json文件
方法:dump(字典数据,文件流)
# 导包
import json
# 获取文件流病调用dump方法
data = {'name','tom','age','20'}
with open('data2.json','w',encodig = 'UTF-8') as f:
json.dump(data,f)
示例:
"""
目标:写入json
方法:
json.dump(写什么数据(字典数据),往那写(文件流))
"""
import json
"""json写入"""
# 定义写入内容
# data = {"name":"monkey", "age":10}
data = {"name":"猴子", "age":10}
# 调用写入方法
with open("../data/data02.json", "w", encoding="utf-8") as f:
"ensure_ascii: 不使用ascii码"
json.dump(data, f, ensure_ascii=False)