pytest掃盲6--fixture之params、ids前置條件參數化


 1、本文介紹,如何利用 fixture 的 params、ids 參數,實現前置條件參數化

  使用 @pytest.fixture(param=[list1, list2, list3]) 的方式,以 request.param 的方式作為返回值供測試函數調用,param 中有多少元素,則調用幾次,分別作用在每個用到的測試函數上。

# File  : conftest.py
# IDE   : PyCharm

import pytest
from selenium import webdriver

# 將驅動實例化 @pytest.fixture(name
='driver', params=[webdriver.Chrome(), webdriver.Ie()]) def switchBrowser(request):  # request 作為內鍵參數必須傳入 print('\n實例化webdriver') yield request.param # 通過 request.param 接收參數化的數據 print('\n關閉webdriver') request.param.quit()

  使用 fixture 實例化的驅動參數打開瀏覽器:

# File  : test_demo_8.py
# IDE   : PyCharm

from time import sleep
class TestCase:

    def test_1(self, driver):
        print('\n{}打開百度...'.format(driver))
        driver.get('https://www.baidu.com')
        print(driver.title)
        sleep(5)

  執行結果:

 test_demo_8.py::TestCase::test_1[driver0]

 test_demo_8.py::TestCase::test_1[driver1]


============================= 2 passed in 16.59s ============================== Process finished with exit code 0 實例化webdriver PASSED [ 50%] <selenium.webdriver.chrome.webdriver.WebDriver (session="a6394765b9c3d6b2cafb6dabbe0f5701")>打開百度... 百度一下,你就知道 關閉webdriver 實例化webdriver PASSED [100%] <selenium.webdriver.ie.webdriver.WebDriver (session="07c2b43d-d743-4762-b04b-c6c35cc58c34")>打開百度... 百度一下,你就知道 關閉webdriver

 

2、ids 有啥用?

  源碼解釋是字符串id列表,每個id對應一個參數,因此它們是測試id的一部分。如果沒有提供id,它們將自動按照  name[param_index] 的方式生成。

  將上面的 conftest.py 文件加上 ids 參數

# File  : conftest.py
# IDE   : PyCharm

import pytest
from selenium import webdriver

@pytest.fixture(name='driver', params=[webdriver.Chrome(), webdriver.Ie()], ids=['Chrome', 'Ie'])
def switchBrowser(request):
    print('\n實例化webdriver')
    yield request.param    # 通過 request.param 接收參數化的數據
    print('\n關閉webdriver')
    request.param.quit()

  再次執行(注意標紅的部分):

test_demo_8.py::TestCase::test_1[Chrome] 
test_demo_8.py::TestCase::test_1[Ie] 

============================= 2 passed in 16.96s ==============================

Process finished with exit code 0

實例化webdriver
PASSED                          [ 50%]
<selenium.webdriver.chrome.webdriver.WebDriver (session="8fa18d315e3b3d1f46c251a097522a59")>打開百度...
百度一下,你就知道

關閉webdriver

實例化webdriver
PASSED                              [100%]
<selenium.webdriver.ie.webdriver.WebDriver (session="eb9fb969-cdf7-45e3-a761-01a3162d9c85")>打開百度...
百度一下,你就知道

關閉webdriver

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM