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)
以上这个示例,应该算是一种比较规范的测试脚本写法。