pytest详解-(6)函数参数化
在测试用例方法前加测试数据:
@pytest.mark.parametrize("参数名",列表数据)
参数名:用来接收每一项数据,并作为测试用例的参数。
列表数据:一组测试数据。
语法:
* 传入单个参数 @pytest.mark.parametrize('参数名',lists) * 传入两个参数 @pytest.mark.parametrize('参数1','参数2',[( 参数1_data[0],参数2_data[0]),( 参数1_data[1],参数2_data[1])] 传三个或者更多也是这样传。list的每个元素都是一个元祖,元祖里的每个元素和按参数顺序一一对应。 * demo # @pytest.mark.parametrize("a,b,c", [(1, 2, 0.5), (1, 1, 1)]) # 参数a,b,c均被赋予两个值,函数会运行两遍 @pytest.mark.parametrize("a,b,c", return_data()) # 使用函数返回值的形式传入参数值 @pytest.mark.div def test_division_seven(self, a, b, c): result = self.calc.division(a, b) assert c == result
多次使用parametrize
场景:用户登录,需要输入不同的用户名、密码多种组合
@pytest.mark.parametrize("name", [1,2]) @pytest.mark.parametrize("password", [8,10,11]) def test_login(name,password): print(f"测试数据组合name:{name},password:{password}")
将case放在yaml文件内进行参数化
yaml文件:
- [1,2,0.5]
- [1,2,0.5]
单独写一个方法去读yaml文件然后return,参数化时,使用函数返回值得形式传入参数
def return_date():
with open(r'case_date.yml') as f:
f = yaml.safe_load(f)
return f