赞
踩
在mark标记中我们已经知道装饰器@pytest.mark.parametrize()对测试方法可以进行参数化,那么参数化也可以通过固件实现,只不过Fixture的参数化是通过params参数实现的。
同一个测试方法可能需要不同的参数来构造逻辑、环境或结果基本相同的场景,可以使用Fixture的参数化来减少重复工作。
来看看下面的例子:固件参数化使用Pytest的内置固件request,使用request.param来获取参数。
- import pytest
-
- @pytest.fixture(params=[(1,2,3),(2,3,5),(4,6,9)])
- def test_fix_params(request):
- return request.param #使用内置固件request来获取参数
-
- def test_fix_add(test_fix_params): #在参数中调用fixture的参数化方法
- assert test_fix_params[2] == test_fix_params[0] + test_fix_params[1]
-
- if __name__ == '__main__':
- pytest.main(['-s', '-v', 'test_fixture_para.py'])
执行结果如下:可见测试方法共执行了3次。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。