pytest数据参数化,需要两个变量,name、values
@pytest.mark.parametrize(argnames, argvalues)
argnames:参数化的变量,string(逗号分隔),list,tuple
argvalues:参数化的值,list,list[tuple]
python数据参数化
"""
@Time :2021/11/8 12:49
@Author :Wesley
@File :demo_a.PY
"""
import pytest
class TestData:
@pytest.mark.parametrize("a, b", [(10, 20), (10, 30)])
def test_param(self, a, b):
print(a + b)
# 元组
class TestData:
@pytest.mark.parametrize(("a", "b"), [(10, 20), (10, 30)])
def test_param(self, a, b):
print(a + b)
# 列表
class TestData:
@pytest.mark.parametrize(["a", "b"], [(10, 20), (10, 30)])
def test_param(self, a, b):
print(a + b)
# -------------yaml文件
import pytest
import yaml
class TestData:
@pytest.mark.parametrize(("a", "b"), yaml.safe_load(open("./data.yaml")))
def test_param(self, a, b):
print(a + b)
当前目录下的yaml文件
-
- 10
- 20
-
- 30
- 40
-
- 5
- 6
python数据驱动
数据量小的测试用例可以使用代码的参数化进行实现数据驱动
数据量大的情况下使用结构化的文件(yaml,json)进行存储,在测试用例进行读取
"""
@Time :2021/11/11 16:58
@Author :Wesley
@File :test_demo.PY
"""
import pytest
import yaml
class TestDemo:
@pytest.mark.parametrize("env", yaml.safe_load(open("./env.yml")))
def test_demo(self, env):
if "test" in env:
print("这是测试环境")
print(env)
# test
print("ip: ", env["test"])
# ip: 127.0.0.1
elif "dev" in env:
print("这是开发环境")
def test_yml(self):
print(yaml.safe_load(open("./env.yml")))
# {'test': '127.0.0.1'}
当前目录下的yaml文件
-
test: 127.0.0.1