【pytest-05】pytest.mark.parametrize的使用
-
一、前言
-
Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化
-
-
二、如何使用
- 第一个参数是字符串,多个参数中间用逗号隔开
- 第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应
- 传一个参数 @pytest.mark.parametrize('参数名',list) 进行参数化
- 传两个参数@pytest.mark.parametrize('参数名1,参数名2',[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化
1、单参数数据驱动-1个参数1个值
示例代码:test_pytest.py
1 2 3 4 5 6 7 8 | import pytest # 一个参数一个值 @pytest .mark.parametrize( "number" , [ 0 , 1 ]) def test_case1(number): assert number = = 1 if __name__ = = '__main__' : pytest.main([ "-s" , "-v" , "-k" , "test_pytest.py" ]) |
运行结果如下图:
2、多参数数据驱动-多参数多个值
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import pytest import time @pytest .mark.baidu class TestBaidu : def setup_method( self ): self .driver = webdriver.Chrome() self .driver.implicitly_wait( 30 ) self .base_url = "http://www.baidu.com/" @pytest .mark.parametrize( 'search_string,expect_string' ,[( 'iTesting' , 'iTesting' ),( 'helloqa.com' , 'iTesting' )]) def test_baidu_search( self ,search_string,expect_string): driver = self .driver driver.get( self .base_url + './' ) driver.find_element_by_id( "kw" ).send_keys(search_string) driver.find_element_by_id( "su" ).click() time.sleep( 2 ) search_results = driver.find_element_by_xpath( '//*[@id="1"]/h3/a' ).get_attribute( 'innerHTML' ) assert (expect_string in search_results) is True def teardown_method( self ): self .driver.quit() if __name__ = = '__main__' : pytest.main([ "-m" , "baidu" , "-s" , "-v" , "-k" , "test_baidu.py" ]) |
运行结果如图:
3、多个参数的混合使用
有点类似笛卡尔积的意思,示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import pytest data1 = [ 1 , 2 ] data2 = [ "小苹果" , "小菠萝" ] data3 = [ "风" , "之" , "翼" , "测" , "试" , "笔" , '记' ] @pytest .mark.parametrize( "a" , data1) @pytest .mark.parametrize( "b" , data2) @pytest .mark.parametrize( "c" , data3) def test_case3(a, b, c): print (f "生成新的数据组合为:[{a} {b} {c}]" ) if __name__ = = '__main__' : pytest.main([ "-s" , "-v" , "-k" , "test_pytest.py" ]) |
运行结果如果所示:
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/16047240.html
分类:
从0到1搭建自动化测试框架实践
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)