1、数据驱动概念(数据驱动依赖于参数化来实现)
通过测试数据来驱动测试用例的执行
1.1 数据驱动特点(了解)
-
数据驱动本身不是一个工业级标准的概念,因此在不同的公司都会有不同的解释。
-
可以把数据驱动理解为一种模式或者一种思想。
-
数据驱动技术可以将用户把关注点放在对测试数据的构建和维护上,而不是直接维护脚本,可 以利用同样的过程对不同的数据输入进行测试。
-
数据驱动的实现要依赖参数化的技术。
1.2 数据驱动方式
-
直接定义在测试脚本中(简单直观,但代码和数据未实现真正的分离,不方便后期维护)
-
从文件读取数据,如JSON、excel、xml、txt、yaml等格式文件
-
从数据库中读取数据
-
直接调用接口获取数据源
-
本地封装一些生成数据的方法
1.3 json读取文件
一、定义列表模式的json文件:
import json
# 读取文数据
def get_case_data():
with open("case_data/login_case_data.json", encoding='utf-8') as f:
case_data = json.load(f)
print(case_data)
# 返回的是列表,但是列表里面还是列表 这种也是正确的
get_case_data() # [['13266666666', '123456'], ['13299999999', '123321']]
二、定义列表模式的json文件:
返回的是列表,列表中是一个字典类型的数据
import json
def get_case_data():
with open("case_data/login_case_data.json", encoding='utf-8') as f:
case_data = json.load(f)
print(case_data)
get_case_data()
# 返回的是列表,列表中是一个字典数据 {'username': '张三', 'password': '123456', 'phone': '13266666666'}
# [{'username': '张三', 'password': '123456', 'phone': '13266666666'}, {'username': '李四', 'password': '123321', 'phone': '13299999999'}]
三、定义字典模式的json文件
遍历得到:
import json
def get_case_data(filename):
with open(filename, encoding='utf-8') as f:
case_data = json.load(f)
list_case_data = []
for case in case_data.values():
list_case_data.append(tuple(case.values()))
return list_case_data
result = get_case_data("case_data/login_case_data.json")
for x in result:
print(x)
# ('张三', '123456', '13266666666', '账号不存在')
# ('李四', '123321', '13299999999', '密码错误')
# ('', '123321', '13299999999', '用户名不能为空')