1.定义一个conftest.py文件,定义函数的前置方法以及后置方法,在方法的上方定义@pytest.fixture(scope='fuction') # 默认为function
1.1 若pytest.fixture(autouse=Ture),可以使fixture 在不显式调用的情况下自动应用到所有函数中,就是其他方法被调用是,该方法一定会被调用,可以解决若每个函数都要传入,则可以简洁代码
1.2 参数化fixture
在函数的上方定义@pytest.fixture(params=[1,2,3]),则在定义用例函数时可以传入,已经定义好的函数名,进行参数的使用
2.定义一个test_function.py文件 定义的函数是以test_开头,在方法的上方定义@pytest.mark.userfixture(' ') # 传入需要使用的函数名
3.使用@pytest.mark.parametrize() 进行参数化
3.1 在以test开头的函数中,在函数上方可以通过@pytest.mark.patametrize('input','expected',[(1,2),(2,4),(3,6)])进行参数的传递,传递给test开头的函数
3.2 还可以从外部数据源(如csv文件或者数据库)中读取参数化测试数据
例如:
def get_data():
with open('test_data.csv',newline='') as csvfile:
datareader = csv.reader(csvfile)
data = [tuple(row)for row in datateader]
return data
@pytest.mark.parametrize('a,b,expected',get_data())
def test_from_csv(a,b,expected):
assert int(a)+int(b) == int(expected)