pytest之參數化


先簡單說說什么是參數化,已百度為例平時我們測試搜索,每次我們測試一個不同的搜索內容,都需要更改參數的值。在這個過程里面,除了數據在變動以外,其他步驟都是重復的。

這個時候我們就可以使用參數化的方式來代替數據的變動。參數化顧名思義就是把不同的參數,寫到一個列表里,或者說寫到一個集合里面。然后讓程序自動去這個列表里面取值,直到列表為空便結束。

 使用方法@pytest.mark.parametrize("argnamest",argvalues)

源碼參數:

parametrize(self,argnames, argvalues, indirect=False, ids=None, scope=None)

argnames:參數名稱

argvalues:參數對應值,類型必須為list

單個參數格式為:("參數名",[value]

@pytest.mark.parametrize("content",[1,3])

import pytest
from appium import webdriver
import time

# todo pytest里面類名也要已test開頭
class Test_Search_():
    def setup_class(self):
        desired_caps = {
            "platformName": "Android",
            "platformVersion": "5.1",
            "deviceName": "127.0.0.1:62001",
            "appPackage": "com.android.settings",
            "appActivity": ".Settings",
            "noreset": "True"
        }

        # todo 獲得驅動對象
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
   # 參數化,循環從列表里面取值 @pytest.mark.parametrize(
"content",[1,3]) def test_search(self,content): self.driver.find_element_by_id('com.android.settings:id/search').click() self.driver.find_element_by_id('android:id/search_src_text').send_keys(content) time.sleep(1) if __name__ == '__main__': pytest.main(["-s", "search.py"])

 多個參數格式為:參數名后面跟對應的參數值

@pytest.mark.parametrize(("username", "password"), [("1585", "mg123456"), ("13929", "a12345")])

import pytest
from appium import webdriver
import time

# todo pytest里面類名也要已test開頭
class Test_Search_():
    def setup_class(self):
        desired_caps = {
            "platformName": "Android",
            "platformVersion": "5.1",
            "deviceName": "127.0.0.1:62001",
            "appPackage": "com.android.settings",
            "appActivity": ".Settings",
            "noreset": "True"
        }

        # todo 獲得驅動對象
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
   # 多個參數參數化
    @pytest.mark.parametrize(("username", "password"), [("15885", "mg123456"), ("18929", "a12345")])
    def test_search(self,username,password):
        self.driver.find_element_by_id('com.android.settings:id/search').click()
        self.driver.find_element_by_id('android:id/search_src_text').send_keys(username,password)
        time.sleep(1)

if __name__ == '__main__':
    pytest.main(["-s", "search.py"])

 

 


免責聲明!

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



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