?在编写测试用例时,经常需要给测试用例传递参数,Pytest可以通过多种形式给测试用例传递参数:
1、使用pytest.mark.parametrize
2、使用Pytest.fixture
pytest.mark.parametrize
pytest.mark.parametrize(“参数名”,参数值)
-
同时传递多个参数时,每一个参数用逗 分隔,也可以采取多次声明叠加参数的形式。
-
同时传递多组值时每一组值用括 包裹,用逗 分隔每一组值:
@pytest.mark.parametrize(“a,b”,[(data1,data2),(“aaa”,”bbb”)])
-
参数值可以通过变量传参,如下示例,但是需要注意的是,如果同时传递多个参数时,会把参数值当做一个整体进行传值。
test_DemoD5()中的a传递的是“(“case1”, “case2”, “case3”)”
-
当传递多个参数时,某一个参数的值不够时,会进行循环取值,直到所有的参数取值完毕。如以下示例的参数a和b。其中a和b只有2个值,C有3个。
-
可以通过pytest.param()方法指定参数的取值标签
示例如下:标签L3引用该值
@pytest.mark.parametrize(“a,b”,[(“a1″,”b2”),pytest.param(“a2″,”b2”,marks=pytest.mark.L3)])
示例:
执行结果如下:
Pytest.fixture方式传参
fixture有两种传参方式,一种是通过param参数传递,一种是通过返回值传递。
通过param的传递时,最终还是通过返回值回调给测试用例。唯一不同的是当有多个参数值时,会调用多次该方法。
fixture中需要传入request。通过request.param取参即可。
示例如下:
通过返回值传参就比较简单,直接定义fixture函数,然后在测试方法中添加fixture的方法名为参数值即可。
如下面的test_params2的测试方法就是通过param2的返回值进行传参的。
————————————-最后———————————
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览215240 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!