pytest参数化有两种方式:
接下来以上面两种方式演示参数化的多种情况。
演示代码如下:
import pytest
@pytest.fixture(params=(1, 2))
def login_data(request):
return request.param
class TestLogin:
# parametrize参数化时,需传入两个参数,第一个参数为变量名,第二个参数为参数化的值
@pytest.mark.parametrize("data", \["a", "b"\])
def test\_login\_001(self, data):
print("执行用例001")
print(f"调用参数-{data}")
# 调用被@pytest.fixture装饰的函数
def test\_login\_002(self, login\_data):
print("执行用例002")
print(f"调用参数-{login\_data}")
执行结果如下:
演示代码如下:
import pytest
@pytest.fixture(params=((1, 2), (3, 4)))
def login_data(request):
return request.param
class TestLogin:
# parametrize参数化时,需传入两个参数,第一个参数为变量名,第二个参数为参数化的值
@pytest.mark.parametrize("data1, data2", \[("a1", "a2"), ("b1", "b2")\])
def test\_login\_001(self, data1, data2):
print("\\n执行用例001")
print(f"调用参数-{data1}-{data2}")
# 调用被@pytest.fixture装饰的函数
def test\_login\_002(self, login\_data):
print("\\n执行用例002")
print(f"调用参数-{login\_data\[0\]}-{login\_data\[1\]}")
# parametrize,也可以像fixture用一个变量名使用索引的方式取值。
@pytest.mark.parametrize("data", \[("a1", "a2"), ("b1", "b2")\])
def test\_login\_003(self, data):
print("\\n执行用例001")
print(f"调用参数-{data\[0\]}-{data\[1\]}")
执行结果如下:
演示代码如下:
import pytest
@pytest.fixture(params=({"username": "aaa", "password": 111}, {"username": "bbb", "password": 222}))
def login_data(request):
return request.param
class TestLogin:
# parametrize参数化时,需传入两个参数,第一个参数为变量名,第二个参数为参数化的值
@pytest.mark.parametrize("data", \[{"username": "ccc", "password": 333}, {"username": "ddd", "password": 444}\])
def test\_login\_001(self, data):
print("\\n执行用例001")
print(f"调用参数-{data\['username'\]}-{data\['password'\]}")
# 调用被@pytest.fixture装饰的函数
def test\_login\_002(self, login\_data):
print("\\n执行用例002")
print(f"调用参数-{login\_data\['username'\]}-{login\_data\['password'\]}")
执行结果如下:
多次参数化会产生像笛卡尔积一样的结果。
演示代码如下:
import pytest
@pytest.fixture(params=({"username": "aaa", "password": 111}, {"username": "bbb", "password": 222}))
def login_data(request):
return request.param
@pytest.fixture(params=["xxs://xxx.com", "dds://ddd.com"])
def env_data(request):
return request.param
class TestLogin:
# parametrize参数化时,需传入两个参数,第一个参数为变量名,第二个参数为参数化的值
@pytest.mark.parametrize("data1", \[{"username": "ccc", "password": 333}, {"username": "ddd", "password": 444}\])
@pytest.mark.parametrize("data2", \["var1", "var2"\])
def test\_login\_001(self, data1, data2):
print("\\n执行用例001")
print(f"调用参数-{data1\['username'\]}-{data1\['password'\]}")
print(f"调用参数-{data2}")
# 调用被@pytest.fixture装饰的函数
def test\_login\_002(self, login\_data, env\_data):
print("\\n执行用例002")
print(f"调用参数-{login\_data\['username'\]}-{login\_data\['password'\]}")
print(f"调用参数{env\_data}")
执行结果如下:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章