def push_my_saves(saves_name, package): save_from = './saves/' + saves_name ''' save_from = './saves/save_common' if test_id == Cases.TUTORIAL_1: save_from = './saves/save_tutorial_1' if test_id == Cases.TUTORIAL_2: save_from = './saves/save_tutorial_2' if test_id == Cases.TUTORIAL_3: save_from = './saves/save_tutorial_3' # if test_id == Cases.TUTORIAL_4: save_from = './saves/save_tutorial_4' if test_id == Cases.TUTORIAL_5: save_from = './saves/save_tutorial_5' if test_id == Cases.TUTORIAL_6: save_from = './saves/save_tutorial_6' if test_id == Cases.TUTORIAL_7: save_from = './saves/save_tutorial_7' if test_id == Cases.TUTORIAL_8: save_from = './saves/save_tutorial_8' if test_id == Cases.TUTORIAL_9: save_from = './saves/save_tutorial_9' if test_id == Cases.TUTORIAL_10: save_from = './saves/save_tutorial_10' ''' clear_app(package) full_path_to = 'sdcard/Android/data/' + package shell('mkdir ' + full_path_to) full_path_to = 'sdcard/Android/data/' + package + "/files" shell('mkdir ' + full_path_to) shell('mkdir ' + full_path_to + '/2020-04-09-17-10-42') shell('mkdir ' + full_path_to + '/Settings') a = Android() a.adb.push(save_from + '/events.tsf', full_path_to + '/2020-04-09-17-10-42/') a.adb.push(save_from + '/profile.tsf', full_path_to + '/2020-04-09-17-10-42/') a.adb.push('./saves/Settings/settings.tsf', full_path_to + '/Settings/') a.adb.push('./saves/nw_save10.save', full_path_to + '/')
def setUp(self): stop_app("com.gameholic.drawsomethingbyspider") clear_app("com.gameholic.drawsomethingbyspider") wake() home() start_app("com.gameholic.drawsomethingbyspider") sleep(7) self.poco = UnityPoco() print("test reward level no coins start")
def setUp(self): stop_app("com.gameholic.drawsomethingbyspider") clear_app("com.gameholic.drawsomethingbyspider") wake() home() start_app("com.gameholic.drawsomethingbyspider") sleep(7) self.poco = UnityPoco() print("handBook test start")
def setUp(self): # connect_device("android:///") # self.poco1 = AndroidUiautomationPoco(force_restart=False) stop_app("com.gameholic.drawsomethingbyspider") clear_app("com.gameholic.drawsomethingbyspider") wake() home() start_app("com.gameholic.drawsomethingbyspider") sleep(7) self.poco = UnityPoco()
def dr_finalizer(): stopapp = request.config.getoption("stopapp") if stopapp == True or stopapp == 'True': stop_app(APP_PACKAGE) clear_app(APP_PACKAGE) print() print('conftest: stop app') if airtesthtml and airtestlog: custom_report(case_info, logdir, online_path=online_path, proj_name=PROJ_NAME, static_root=static_root)
def tests_runner(main_script, file_config): # читаем конфиг из config-файла package, data_config = read_data_from_config(file_config) gl_report = [] # на сколько я понял это каждый раз открывает новое соединение ''' # подключаемся к девайсу if run_on_emulator: # для эмулятора init_device(platform='Android', cap_method='JAVACAP', ori_method='ADBORI') else: # для девайса init_device(platform='Android') log('Init Device') ''' init_device(platform='Android') dev = device() poco = UnityPoco() # вроде всё готово для тестов: t0 = time.time(); out('Cases::tests_runner()... started') # выставляем значения по умолчанию потому что предыдущего теста не было last_test_stop_app = False need_wake = True # for line in data_csv: for line in data_config: # из config-файла test_id, f_wake, f_stop_before, f_clear_app, f_push_saves, \ f_start_app, f_stop_after = parse_line_from_config(line) if need_wake: f_wake = True need_wake = False if last_test_stop_app: f_stop_before = True f_start_app = True last_test_stop_app = False # создаём логирование log_path = 'report(' + test_id + ')' set_logdir(log_path) # пробуждаем устройство if f_wake: wake() # останавливаем приложение if f_stop_before: stop_app(package); time.sleep(1) # отчистить даные приложения if f_clear_app: clear_app(package) # подсовываем сэйвы if f_push_saves != '': push_my_saves(f_push_saves, package) # стартуем приложение if f_start_app: start_app(package) time.sleep(10) poco = UnityPoco() # запускаем тест tt0 = time.time(); result, runned = test_runner(dev, poco, test_id) dtt = time.time() - tt0 print('test: ' + test_id + '; ' + \ 'runned: ' + str(runned) + '; ' + \ 'result: ' + str(result) + '; ' + \ 'time(sec): ' + str(int(dtt))) print('-----------------------') if not result: last_test_stop_app = True f_stop_after = True gl_report.append([test_id, runned, result, dtt]) # останавливаем приложение if f_stop_after: last_test_stop_app = True stop_app(package) # далее обязательная секция чтобы сгенерить отчёт report_path = get_log_path(main_script, log_path) print(report_path) simple_report(main_script, report_path, output='report(' + test_id + ').html') t1 = time.time() out('Cases::tests_runner()... complete (' + str(t1 - t0) + ' sec)') # заключительный репорт gl_report log_path = 'report' set_logdir(log_path) for gl_data in gl_report: txt = gl_data[0] + ' ' prop = '' if not gl_data[1]: prop += 'тест не найден' else: txt += '(' + str(int(gl_data[3])) + ' sec)' if not gl_data[2]: prop += 'тест не пройден' out(txt, prop) # далее обязательная секция чтобы сгенерить отчёт report_path = get_log_path(main_script, log_path) print(report_path) simple_report(main_script, report_path, output='global_report.html')
def runTest(): stop_app("com.gameholic.drawsomethingbyspider") clear_app("com.gameholic.drawsomethingbyspider") wake() home() start_app("com.gameholic.drawsomethingbyspider") sleep(7) permissionClick() autoUpdate() login("wn10001", "z123456") waitLogin() sleep(5) poco = UnityPoco() #进入商店 poco("Shop").click() sleep(1) #关闭购买去广告提示弹框 if poco("BitchPopup").child("Image").child("Image").exists(): print("弹出支付去广告成功") poco("Button").child("Text").click() if not poco("BitchPopup").child("Image").child("Image").exists(): print("关闭弹框成功") sleep(1) #关闭商店 poco("Return").click() sleep(1) if not poco(text="Limited").exists(): print("退出商店成功") poco("Shop").click() sleep(1) #关闭购买去广告提示弹框 if poco("BitchPopup").child("Image").child("Image").exists(): print("弹出支付去广告成功") poco("Button").child("Text").click() sleep(1) #切换标签和购买 #切换所有标签 poco(text="Gift").click() sleep(1) if poco("PropName").get_text() == "Marvellous Gift": print("切换礼物标签成功") poco("Text (2)").click() sleep(1) if poco("PropName").get_text() == "Speed-up": print("切换到道具标签成功") poco(text="Diamonds").click() sleep(1) if poco(text="Super Gems Pack").get_text() == "Super Gems Pack": print("切换钻石标签成功") poco(text="Limited").click() sleep(1) if not poco("PropName").exists(): print("切换到礼包标签成功") poco(text="Monster").click() sleep(1) if poco(text="Green Fluffy").get_text() == "Green Fluffy": print("切换到怪物标签成功") #滑动列表 poco(texture="monster_A1_1").wait_for_appearance() poco(texture="monster_A1_1").click() beforSwipe = poco(texture="monster_A1_1").get_position() poco.swipe([300.0/576, 850.0/1024],[300.0/576, 150.0/1024]) sleep(2) afterSwipe = poco(texture="monster_A1_1").get_position() if beforSwipe != afterSwipe: print("滑动列表成功") else: print("滑动列表失败") #滑动回顶部 poco.swipe([300.0/576, 150.0/1024],[300.0/576, 850.0/1024]) sleep(2) #购买逻辑 poco("Tree").child("ShopProp(Clone)")[0].child("BuyIt").child("Text").click() sleep(2) buyConfirm = poco("lable").get_text() if buyConfirm == "Confirm to purchase": print("打开确认购买弹框成功") #取消购买 poco(text="Cancel").click() sleep(1) if not poco(text="Confirm to purchase").exists(): print("取消购买成功") #wn10001购买怪物成功 buy() #切换到钻石标签查看sdk调出 poco(text="Diamonds").click() sleep(1) if poco(text="Super Gems Pack").get_text() == "Super Gems Pack": print("切换钻石标签成功") buy() #完成测试 stop_app("com.gameholic.drawsomethingbyspider") sleep(2.0) snapshot(msg="app stopped") print("shop finish test")
def poco(request, driver_class): # connect_device() from poco.drivers.android.uiautomation import AndroidUiautomationPoco case_name = request.node._nodeid airtestlog = request.config.getoption("airtestlog") if airtestlog: split_path = request.module.__file__.split(PROJ_NAME) log_parentdir = split_path[0] + PROJ_NAME + '\\' + GL.REPORT_DIR if not os.path.exists(log_parentdir): os.mkdir(log_parentdir) jkbuildid = request.config.getoption("--jkbuildid") jkjobname = request.config.getoption("--jkjobname") if jkbuildid != -1 and jkjobname: logdir = os.path.join(log_parentdir, jkjobname) if not os.path.exists(logdir): os.mkdir(logdir) logdir = os.path.join(logdir, jkbuildid) if not os.path.exists(logdir): os.mkdir(logdir) else: logdir = log_parentdir #log_subdir = request.module.__name__+' '+request.function.__name__ logdir = os.path.join(logdir, request.module.__name__) if not os.path.exists(logdir): os.mkdir(logdir) logdir = os.path.join(logdir, request.function.__name__) if not os.path.exists(logdir): os.mkdir(logdir) print(' logdir: ', logdir) #request.logdir=logdir G.LOGGING.debug('logdir: %s' % logdir) set_logdir(logdir) airtesthtml = request.config.getoption("airtesthtml") if airtesthtml and airtestlog: from airtest.report.report import custom_report from airttest_settings import jk_server, static_server case_info = {"name": case_name, "desc": request.node.function.__doc__} if jkbuildid != -1 and jkjobname: #'http://xx.xx.x.x:8080/jenkins/job/JOBNAME/ws/report/JOBNAME/' print('jk jk_server: ', jk_server) #jk_logdir=logdir.split(PROJ_NAME)[1] #print('jk log dir: ',jk_logdir) #online_report=jk_server+'/job/'+jkjobname+'ws'+jk_logdir.replace('\\','/')+'/' online_path = jk_server + '/job/' + jkjobname + '/ws/' static_root = jk_server + '/job/' + jkjobname + '/ws/files/statics/' else: online_path = None static_root = None startapp = request.config.getoption("startapp") print('startapp: ', startapp) print('type(startapp): ', type(startapp)) if startapp == True or startapp == 'True': clear_app(APP_PACKAGE) print('conftest: start app') start_app(APP_PACKAGE) poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=True) yield poco #yield driver_class def dr_finalizer(): stopapp = request.config.getoption("stopapp") if stopapp == True or stopapp == 'True': stop_app(APP_PACKAGE) clear_app(APP_PACKAGE) print() print('conftest: stop app') if airtesthtml and airtestlog: custom_report(case_info, logdir, online_path=online_path, proj_name=PROJ_NAME, static_root=static_root) request.addfinalizer(dr_finalizer)