数据驱动
-
什么是数据驱动?
数据驱动就是数据的改变从而驱动自动化测试用例的执行,最终引起测试结果的改变。简单来说,就是参数化的应用;
数据量小的测试用例可以使用代码的参数化来实现数据驱动;
数据量大的情况下可以使用结构化文件yaml或者json等,来对数据进行存储,然后在测试用例中读取这些数据。 -
应用:
App、Web、接口自动化测试
测试步骤的数据驱动:将每一个测试步骤定义为关键字
测试数据的数据驱动: yaml、json、excel、csv
配置的数据驱动 -
yaml文件介绍
对象:键值对的集合,用冒号":"表示,例如:{languages : [php, java, python] },表示如下:
数组:一组按次序排列的值,前加"-"
纯量:单个的、不可再分的值
字符串
布尔值
整数
浮点数
Null
时间
日期
-
yaml文件使用
-
查看yaml文件
pycharm
txt记事本
- pycharm读取yaml文件
安装:pip install pyyaml
方法:yaml.safe_load(f):safe_load(f)方法,将打开后的yaml文件加载成python对象
方法:yaml.safe_dump(f):safe_dump(f)方法,将python对象解析成yaml格式的文件,并保存到文件f
import yaml
file_path = './my.yaml'
with open(file_path, 'r', encoding='utf-8') as f:
data = yaml.safe_load(f)
-
yaml文件所在的工程目录结构
data目录:存放yaml数据文件
func目录:存放被测函数文件,init.py文件
testcase目录:存放测试用例文件,init.py文件
-
测试准备
测试数据:data.yaml
被测对象:operation.py
测试用例:test_add.py
# data.yaml 文件内容: [[1,1,2],[3,6,9],[100,200,300]]
-
- 1
- 1
- 2
-
- 3
- 6
- 9
-
- 100
- 200
- 300
# operation.py 文件内容
def my_add(x,y):
result = x + y
return result
# test_add.py 文件内容
import pytest
import yaml
from func.operation import my_add
# 用到yaml文件中的数据时,就需要读取出来
def get_yaml():
"""
获取json数据
:return: 返回数据结构:[[1,2,3],[3,6,9],[100,200,300]]
"""
#如果yaml文件中有中文,需加上encoding="utf-8"
with open('../data/data.yaml','r',encoding="utf-8") as f:
data = yaml.safe_load(f) #将yaml文件加载成python对象:[[],[],[]]
return data
class TestWithYAML:
@pytest.mark.parametrize('x,y,expected',get_yaml())
def test_add(self,x,y,excepted):
assert my_add(int(x),int(y)) == int(expected)