Pytest 参数化

通常我们需要一条用例运行多条不同的数据,如何实现呢?Pytest框架使用装饰器@pytest.mark.parametrize()实现参数化。

1. @pytest.mark.parametrize("name,tel",para1) 修饰类-作用域整个类,类中所有用例都要带参.否则报错

file

2. @pytest.mark.parametrize("name,tel",para1) 修饰函数

2.1 单参:

sex = [0,1] para1 = { (name[0],tel[0]), (name[1],tel[1]), (name[2],tel[2]) } class Test_Demo(): @pytest.mark.parametrize("sex", sex) def test_demo3(self,sex): print('user sex is {}'.format(sex))

file

2.2 多参:

#一个参数对应一个数据,个数需一致 @pytest.mark.parametrize("name,tel", para1) def test_demo1(self,name,tel): print('name is {} ans tel is {}'.format(name,tel))

file

#一个参数对应一组数据 @pytest.mark.parametrize("info", para1) def test_demo2(self,info): print('user info is {}'.format(info))

file

3 参数组合: 用例个数为参数做笛卡尔积

@pytest.mark.parametrize("name", name) @pytest.mark.parametrize("sex", sex) def test_demo4(self, name, sex): print('name is {} ans sex is {}'.format(name, sex))

file

4 数据类型可为元祖,列表,字典:

para2 = [ {'name':name[1],'tel':tel[1]}, {'name':name[2],'tel':tel[2]} ] para1 = [ [1,2,3], [2,2,3], ] para3 = [ (1,2,3) ] @pytest.mark.parametrize("usr", para2) def test_demo4(self, usr): print('usr is {}'.format(usr))

file

5.自定义输出参数格式,增加可读性-装饰器带ids参数

ids = ['name is {} ans tel is {}'.format(name, tel) for name, tel in para1] @pytest.mark.parametrize("name,tel", para1,ids=ids) def test_demo1(self, name, tel): print('name is {} ans tel is {}'.format(name, tel))

file

6.标记用例:已知输入某组数据可知对应结果,数据可直接标记

para1 = [ (name[2], tel[2]), pytest.param(0,0,marks=pytest.mark.skip), pytest.param(-1,0,marks=pytest.mark.xfail) ] class Test_Demo(): @pytest.mark.parametrize("name,tel", para1) def test_demo1(self, name, tel): print('name is {} ans tel is {}'.format(name, tel))

file

讨论数量: 1

排版看着很舒服

4年前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
分享你的见解~