1. 程式人生 > >python+ selenium&APPium page Object 設計模式

python+ selenium&APPium page Object 設計模式

toa print 每次 操作 之前 大神 而且 組織 重復

題記: 之前公司項目比較穩定, 在進行了系統測試,想用自動化測試進行冒煙測試,或者對主要功能進行測試, 因此用到了PO模式 因此做個記錄:

Page Object

Page Object模式是使用Selenium的廣大同行最為公認的一種設計模式。在設計測試時,把元素和方法按照頁面抽象出來,分離成一定的對象,然後再進行組織。

Page Object模式,創建一個對象來對應頁面的一個應用。故我們可以為每個頁面定義一個類,並為每個頁面的屬性和操作構建模型。體現在對界面交互細節的封裝,測試在更上層使用頁面對象,在底層的屬性或者操作的更改不會中斷測試。減少代碼重復,提高測試代碼的可讀性和可維護性。

我理解就是:把重復用的代碼封裝成個方法 或者類,在維護腳本的時候只需要改一個地方,有點像解耦(請大神指教是這個意思嗎?)

下面以登錄為案例:使用的是unitest框架

image:放置每次執行用例的截圖,方便調試

report:放置每次執行的測試報告

test_case:

  -drvier:封裝了driver類

  -model:封裝了從文件讀取數據等一下工具類

  -page_object:存放一些頁面的元素和定位文件,base.py 把selenium的定位重新封裝;

case1

case2 : 真正的測試用例

run_all_test 執行用例

主要思路:在driver.py 封裝了driver的方法, myunit.py 調用driver方法,在case類中繼承myunit 類 就等於每次用例都有生產driver

技術分享圖片

driver.py:

def browser():

    desired_caps = {
        platformName:Android,
        deviceName: 1f9XXXX08b,
        platformVersion:"5.1",
        appPackage:com.XXXXXss,
        appActivity:com.meXXXXXXXXs.activity.LoginActivity,
        unicodeKeyboard: True,
        
resetKeyBoard: True, "automationName":"uiautomator2" } driver = webdriver.Remote(http://127.0.0.1:4723/wd/hub,desired_caps) time.sleep(10) # d = driver.current_activity # print(d) return driver

myunit.py

import driver

class MyTest(unittest.TestCase):

    def setUp(self):
        self.driver = browser() #調用driver
        self.driver.implicitly_wait(10)


    def tearDown(self):
        self.driver.quit()

login_case.py

class LoginTest(myunit.MyTest):

    def test_login_user_null(self):
        ‘‘‘用戶名為空‘‘‘
        #配置IP地址
        ipo = IPConfigPage(self.driver)
        lpo = LoginPage(self.driver)
        lpo.click_ip_btn()
        ipo.ipconfig_action("127.0.0.1")
        #配置登錄信息
        lpo.login_action("","")
        result = driverwait.find_toast(self.driver, u賬號為空)
        print(u"用戶名和密碼為空校驗結果%s"%result)
        function.insert_image(self.driver, "login_user_null.jpg")

最後總結:個人ui自動化測試局限性比較大,相對於接口自動化,俗話說越後介入成本越高,ui自動化屬於中後期,需要在項目穩定情況,小公司很難用的上,如果遇到項目叠代快,需求變化大,維護成本過高。而接口自動化能更早介入測試較早介入測試,維護成本低,而且能部分解決安全問題,人力資源成本高相對

python+ selenium&APPium page Object 設計模式