Fork me on GitHub

【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])]) 进行参数化
    参数2_data[1])]) 进行参数化

1、单参数数据驱动-1个参数1个值

示例代码:test_pytest.py

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、多参数数据驱动-多参数多个值

示例代码:

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、多个参数的混合使用

 有点类似笛卡尔积的意思,示例代码如下:

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"])

运行结果如果所示:

 

 

 

  

  

posted @ 2022-03-23 22:19  橘子偏爱橙子  阅读(125)  评论(0编辑  收藏  举报