测试用例的参数化
我们之前学到过fixture可以作为参数传入测试用例。除了这种传参方式,我们还有其他的向测试用例传参的方式。
@pytest.mark.parametrize()
我们可以通过@pytest.mark.parametrize() 这个标签向测试用例中传入参数,如果传入的不只是一组参数而是参数列表,那么该测试用例会根据参数的不同执行多次。
吃个荔枝:我们在第一个测试方法中定义两个参数,在测试方法上面添加@pytest.mark.parametrize()标签;标签里第一个参数是测试方法定义的参数的字符串,用逗号隔开;第二个参数是由要传入参数组成的元组的列表,即使你只想传入一组参数也需要以元组列表的形式(如果你只想对一个参数进行参数化,那你标签的第二个参数是列表即可)。
#test_Pytest.py文件
#coding=utf-8
import pytest
class Test_Pytest():
@pytest.mark.parametrize("message1,message2",[("我","I"),("你","you"),("他","he")])
def test_one(self,message1,message2):
print("test_one方法执行---%s---%s" % (message1,message2) )
assert 1==1
def test_two(self):
print("test_two方法执行" )
assert "o" in "love"
def test_three(self):
print("test_three方法执行" )
assert 3-2==1
if __name__=="__main__":
pytest.main(['-s','test_Pytest.py'])
运行结果如下图:我们可以看到参数化的测试方法根据不同的参数执行了多次。
我们也可以先定义个参数元组的列表,再传入pytest.mark.parametrize标签中,这样使数据分离。
小荔枝:运行结果和上图