使用Appium自动化测试app(六)------实战篇4(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)

以上这个示例,应该算是一种比较规范的测试脚本写法。

你可能感兴趣的:(Appium)