数据驱动简介
数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。简单来说,就是参数化的应用。数据量小的测试用例可以使用代码的参数化来实现数据驱动,数据量大的情况下建议大家使用一种结构化的文件(例如yaml,json等)来对数据进行存储,然后在测试用例中读取这些数据。
数据驱动应用场景
- App、Web、接口自动化测试
- 测试步骤的数据驱动
- 测试数据的数据驱动
- 配置的数据驱动
配置驱动实例
代码如下:
import pytest
import yaml
class TestDemo:
@pytest.mark.parametrize("env", yaml.safe_load(open("./env.yaml")))
def test_demo(self, env):
if "test" in env:
print("这是测试环境")
"""
由于parametrize 要求传入的参数为list 或 tuple,
但是我们传入的为字典,所以打印结果为 “test”,所以应修改yaml文件为list
"""
print(env)
print(f"测试环境的ip为{env['test']}") # 修改env.yaml文件后结果为127.0.0.1
elif "dev" in env:
print("这是开发环境")
- 如果env.yaml 内容如下,则 print(env) 的结果为 ‘test’ ,因为 parametrize 装饰器要求传入的参数为list 或 tuple,但是我们传入的为字典,所以打印结果为 “test”,所以应修改yaml文件为lis
test: 127.0.0.1
- 运行结果
collecting ... collected 1 item
test_demo.py::TestDemo::test_demo[test] PASSED [100%]这是测试环境
test
============================== 1 passed in 0.06s ==============================
Process finished with exit code 0
- 修改 env.yaml 文件如下后
-
test: 127.0.0.1
- 运行结果
collecting ... collected 1 item
test_demo.py::TestDemo::test_demo[env0]
============================== 1 passed in 0.06s ==============================
Process finished with exit code 0
PASSED [100%]这是测试环境
{'test': '127.0.0.1'}
下一节:测试报告定制,包括使用Allure2框架定制信息完备的测试报告