# -*- coding: utf-8 -*-
from __future__ import division
import os
import unittest,time,re,datetime
from HTMLTestRunner import HTMLTestRunner
from appium import webdriver
from time import sleep
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import config
#所有配置信息写到config.py里面
# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
)
class Gametest(unittest.TestCase):
#针对sungxing手机
@classmethod
def
setUpClass(self):
print 'setUpClass'
'''
desired_caps = {}
desired_caps['no-reset']=True
desired_caps['platformName'] = 'Android'
#desired_caps['platformVersion'] = '4.4.2'
#desired_caps['deviceName'] =
'bc6bd36b'
#三星note3
desired_caps['platformVersion'] = '5.0.1'
desired_caps['deviceName'] =
'LGD858HK764aa4d'
#LG g3手机
#针对不同的测试手机需要修改adb device id值
#desired_caps['app'] =
PATH(r'E:\testappium\appiumgame3dgameTest7.apk')
desired_caps['appPackage'] = 'df.er.ga2'
desired_caps['appActivity'] =
'com.unity3d.player.UnityPlayerNativeActivity'
self.driver =
webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
'''
disired_caps={
'no-reset':config.apps['no-reset'],
'platformName':config.apps['platformName'],
'platformVersion':config.apps['platformVersion'],
'deviceName':config.apps['deviceName'],
'appPackage':config.apps['appPackage'],
'appActivity':config.apps['appActivity']
}
self.driver=webdriver.Remote(config.apps['base_url'],disired_caps)
@classmethod
def
tearDownClass(self):
self.driver.close_app()
self.driver.quit()
print 'tearDownClass'
def setUp(self):
'''setup'''
print "setup"
###############
#编写测试用例的手机(lg g3)分辨率,adb shell dumpsys window
displays
testcase_phone_width=2392
#编写测试用例的手机分辨率宽度,就是app的宽度
testcase_phone_height=1440
#编写测试用例的手机分辨率高度,就是app的宽度
####################################
#执行测试用例的手机分辨率:很多台测试手机,分辨率会不一样
execute_case_phone_width=self.driver.get_window_size()['width']
#执行测试用例的手机分辨率,app的宽度
execute_case_phone_height=self.driver.get_window_size()['height']
#执行测试用例的手机分辨率,app的高度
print
'执行测试用例的手机app分辨率-宽度',execute_case_phone_width
print '\n'
print
'执行测试用例的手机app分辨率-高度',execute_case_phone_height
self.base_x=execute_case_phone_width/testcase_phone_width
#测试手机分辨率宽度和编写测试用例手机的分辨率的宽度的相对值
self.base_y=execute_case_phone_height/testcase_phone_height
#测试手机分辨率高度和编写测试用例手机的分辨率的高度的相对值
print 'X轴坐标相对系数:',self.base_x
print '\n'
print 'Y轴坐标相对系数:',self.base_y
def
tearDown(self):
'''teardown'''
print 'teardown'
tap_x=0.0
tap_y=0.0
def
tap_coordination(self,tap_x,tap_y):
self.x=self.tap_x*self.base_x
self.y=self.tap_y*self.base_y
self.driver.swipe(self.x,self.y,self.x,self.y,duration=5)
#此函数封装不同手机分辨率下点击坐标时调用swipe方法
def
test_gotomain(self):
'''进入主界面 testcase1'''
#point=self.driver.get_window_size()
#self.driver.swipe(point[x]*0.8, point[y]*0.8,
point[x]*0.1, point[y]*0.8, duration=6)
'''
x0=1197*self.base_x
y0=727*self.base_y
sleep(3)
self.driver.swipe(x0, y0, x0, y0)
sleep(15)
'''
self.tap_coordination(1197, 727)
sleep(6)
def
test_clickplus(self):
'''点击"-"按钮,数值应该变大 testcase2'''
x1=158*self.base_x
y1=723*self.base_y
for i in range(10):
self.driver.swipe(x1, y1, x1, y1)
sleep(2)
def
test_clickadd(self):
'''点击“+”按钮滑动后再退出 testcase3'''
#点击“+”按钮
x2=153*self.base_x
y2=1193*self.base_y
self.driver.swipe(x2,y2,x2,y2)
sleep(2)
x3=1737*self.base_x
y3=1286*self.base_y
self.driver.swipe(x3,y3,x3,y3)
sleep(3)
#取消"add"
x4=153*self.base_x
y4=1193*self.base_y
self.driver.swipe(x4,y4,x4,y4)
sleep(3)
#开始在屏幕上移动
self.driver.tap([(100,200),(500,400),(1400,700)],2000)
sleep(3)
#按手机上的返回键
self.driver.press_keycode('4')
sleep(3)
#点击退出按钮
self.driver.swipe(1113,780,1113,780)
print '点击退出按钮'
def
test_load(self):
'''返回后再点击“载入按钮 testcase4'''
sleep(3)
self.driver.swipe(1214,975,1214,975)
sleep(3)
self.driver.press_keycode('4')
sleep(3)
#点击退出按钮
if __name__ == '__main__':
timestr =
time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
filename =
"E:\\testappium\\appiumgame\\result_" + timestr + ".html"
print (filename)
fp = open(filename,
'wb')
runner =
HTMLTestRunner(
stream=fp,
title='testreport',
description='testresult'
)
suitecmd =
unittest.TestLoader().loadTestsFromTestCase(Gametest)
unittest.TextTestRunner(verbosity=4).run(suitecmd)
#测试用例名称打印到cmd,在cmd下显示乱码,需要注意cmd编码格式
fp.close()
认真学习,必有收获,版权归属本人。