我们搭建一个自动化框架需要包括以下几个方面:
数据驱动
关键字驱动
全局配置文件的封装
日志监控
selenium、requests二次封装
断言
报告邮件
更多。。。
今天这章来谈谈数据驱动。
所谓数据驱动,可以简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。
pytest的数据驱动有两种方式。一是parametrize驱动,二是yaml驱动。今天我们来分别试试两种驱动的优缺点。
一、parametrize数据驱动
用到装饰器,args_name代表变量名,args_value代表需要测试的数据。
可以是单个变量也可以是多个变量。
-
@pytest.mark.parametrize(args_name,args_value)
args_name:参数名称
args_value:参数值
例子:
import pytest
class Test05:
@pytest.mark.parametrize("args_name", ['百里','婉儿','露露'])
def test_get_token(self,args_name):
print('测试参数'+args_name)
如果参数是多层嵌套:
import pytest
class Test05:
@pytest.mark.parametrize("name,age", [['百里','11'],['婉儿','22'],['露露','33']])
def test_get_token(self,name,age):
print(f'姓名:{name},age:{age}')
二、yaml文件
一种数据格式,一般用于配置文件以及接口自动化的用例
由两种数据格式组成:
1.map对象:键:(空格)值。
name: 百里
2.list列表:用一组-开头。同一个级别的-是同一个list
- name1: 百里
- name2: 婉儿
1、安装pyyaml模块
pip install pyyaml
2、在用例同目录新建yaml文件test_05.yaml
-
name: 获取token接口1
request:
method: get
data:
name: 百里
age: 18
url: https://www.baidu.com
validate: None
-
name: 获取token接口2
request:
method: get
data:
name: 婉儿
age: 17
url: https://www.baidu.com
validate: None
3、添加读取yaml的工具类yaml_util.py
import yaml
def read_yaml(yaml_path):
with open(yaml_path,encoding='utf‐8') as f:
value = yaml.load(f,Loader=yaml.FullLoader)
return value
4、用例读取数据
import pytest
from commons.yaml_util import read_yaml
class Test05:
@pytest.mark.parametrize("args", read_yaml("./testcase/test_05.yaml"))
def test_get_token(self,args):
print(args)
print(args['request']['data']['name'])
通过以上两种方式我们就可以将测试代码和测试数据区分开了!
学习资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我的qq群大家一起讨论交流,里面也有各种软件测试资料和技术交流。