在pytest-贼基础的基础记录中,曾在最后简单的描述了如何对一个测试用例进行传参。看了几篇教程后发现这个还是有些细节及用法需要进一步的了解,今天又学习了下,开始更新。
传一个参数
import pytest
@pytest.mark.parametrize("name",["a","b"])
def test_parametrize(name):
assert len(name)==1
如上述代码,@pytest.mark.parametrize
在定义参数时,首先用引号标明参数名称,而后用list定义参数值。在函数引用时,括号内需要标明引用的参数名称。运行结果如下图所示,可看到,共有两个用例执行。
传多个参数
import pytest
@pytest.mark.parametrize("name,age",[("a",1),("b",2)])
def test_parametrize(name,age):
assert len(name)==1
assert age!=3
当有多个参数时,引号内部的多个参数需要用逗号隔开;而对于参数值,则是在list中以tuple的形式列举。
多个参数运行结果
参数值为字典
data=(
{'name':"a",
'age':1},
{'name':"b",
'age':2}
)
@pytest.mark.parametrize('dic', data)
def test_parametrize_1(dic):
assert len(dic["name"])==1
assert dic["age"]!=3
当参数值为字典数据时,定义参数名字可以直接定义一个整体,应用的时候取字典内对应的参数。
字典参数运行结果
ids标识
@pytest.mark.parametrize
可以通过传递ids
参数来标识每一个测试用例,它是一个字符串列表。
import pytest
@pytest.mark.parametrize("name,age",[("a",1),("b",2)],ids=["first","second"])
def test_parametrize(name,age):
assert len(name)==1
assert age!=3
ids
的数量与用例数量保持一致,运行后会在结果中显示。
自我记录,有错误欢迎指正~
网友评论