1. 程式人生 > >使用Appium自動化測試app(六)------實戰篇3(unittest)

使用Appium自動化測試app(六)------實戰篇3(unittest)

import unittest
import threading
from time import sleep
from appium import webdriver

server = 'http://localhost:4723/wd/hub'
# 連線裝置引數
desired_caps = {
    'platformName': 'Android',
    'deviceName': 'emulator-5556',
    'appPackage': 'com.facebook.katana',
    'appActivity': '.LoginActivity',
    # 彈框默認同意
    'autoAcceptAlerts': 'True',
    'noReset': 'True',
}


class LoginTest(unittest.TestCase):
    # setUp()方法用於測試用例執行前的初始化工作. 如果用例中需要訪問資料庫, 可以在setUp中建立
    #  如果測試用例需要啟動Appium服務, 需要在該方法中啟動Appium服務
    def setUp(self):
        self.driver = webdriver.Remote(server, desired_caps)

    # tearDown()方法用於測試用例執行之後的善後工作, 如關閉資料庫連線, 退出應用
    # 無論這個方法寫在哪裡都是最後執行的
    def tearDown(self):
        self.driver.quit()

    # 具體的測試用例, 必須要以test開頭
    def test_start(self):
        x = self.driver.get_window_size()['width']
        y = self.driver.get_window_size()['height']
        while True:
            if 'Like button. Double tap and hold to react.' in self.driver.page_source:
                sleep(2)
                self.driver.find_element_by_accessibility_id('Like button. Double tap and hold to react.').click()
                sleep(2)
            self.driver.swipe(x * 0.5, y * 0.75, x * 0.5, y * 0.25, 500)
            sleep(2)


if __name__ == '__main__':
    # 構造測試集
    # loadTestsFromTestCase()根據給定的測試類,獲取其中的所有測試方法,並返回一個測試套件
    suite = unittest.TestLoader().loadTestsFromTestCase(LoginTest)
    # unittest框架的TextTestRunner()類, 通過該類下面的run()方法來執行suite所組裝的測試用例, 入參為suite測試套件
    # verbosity 引數可以為0,1,2 意思大致就是數字越大測試結果就資訊就越全
    unittest.TextTestRunner(verbosity=2).run(suite)