def init_app(plat, package_name, app_path, sleep_time, serialno=None): dev = None if plat.lower().find('android') >= 0: if serialno: if re.search('127.0.0.1:\d+', serialno): dev = connect_device('Android:///{}?cap_method=JAVACAP&ori_method=ADBORI'.format(serialno)) else: dev = connect_device('Android:///{}'.format(serialno)) else: dev = connect_device('Android:///') wake() install_android_app(current_device().adb, app_path) stop_app(package_name) start_app(package_name) sleep(sleep_time / 1.5) elif plat == 'PC_editor': w = Windows() dev = UnityEditorWindow() w.keyevent('^P') # Ctrl+P运行 sleep(sleep_time / 2) dev.stop_app = w.app # 用于获取进程id,结束进程用 elif plat == 'PC_win': w = Windows() w.start_app(app_path) sleep(sleep_time) w.connect(process=w.app.process) dev = connect_device("Windows:///?class_name=UnityWndClass") dev.stop_app = w.app # elif plat == 'iOS': # pass # elif plat == 'MAC_editor': # pass return dev
def stop_app(self): """ 杀掉app :return: """ self.check_device() stop_app(self.app_name)
def _stop_app(self,package:Key): ''' 关闭app :param package:app包名 :return: ''' stop_app(package.value)
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): 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): # 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 restart_app_by_scan(): try: stop_app("com.taobao.qianniu") # 如果应用存在后台,先停止,保证能够进入千牛工作台首页 finally: start_app('com.taobao.qianniu') # 启动千牛工作台 try: poco('com.taobao.qianniu:id/workbench_title_scan').click() poco('com.taobao.qianniu:id/btn_album').click() poco(name='显示根目录').click() poco(text='图库').click() poco(text='trade').click() poco('com.android.gallery3d:id/iv_thumbnail').click() poco(desc='确定').click() except PocoNoSuchNodeException: restart_app_by_scan()
def testMakeLv(self): self.permissionClick() self.autoUpdate() self.login("wn10001", "z123456") self.waitLogin() sleep(5) #进入制作关卡 self.enterMakelevel() #查看帮助 self.lookHelp() #退出关卡 self.exitMylevel() #再次进入制作关卡 self.enterMakelevel() #内网可以测试滑动我的关卡 self.swipeMylevel() #添加关卡 self.addLevel() #关闭免责声明 self.closeDisclaimer() self.addLevel() #同意免责声明 self.agreeDisclaimer() #测试切换标签 self.switchLebel() #关闭制作关卡 self.closeMakeLevel() self.addLevel() self.agreeDisclaimer() #发布关卡缺少怪物失败,添加怪物 self.publish() #发布关卡缺少背景失败,添加背景 self.publish() #发布关卡缺少名称失败,添加名称 self.publish() #发布成功 self.publish() #测试关卡修改 self.modifyLevel() self.updatePrivacy() self.swipeMylevel() self.deleteLevel() #结束测试 stop_app("com.gameholic.drawsomethingbyspider") sleep(2.0) snapshot(msg="app stopped") print("finish test")
def autoUpdate(self): # self.poco = UnityPoco() sleep(2) loadingTime = 0 try: while self.poco("tip1").exists(): sleep(5) loadingTime += 5 if loadingTime >= 300: if "url" in self.poco("error").get_text(): print("更新失败") stop_app("com.gameholic.drawsomethingbyspider") else: sleep(5) except RuntimeError as e: raise e
def testRanking(self): self.permissionClick() self.autoUpdate() self.login("wn10001", "z123456") self.waitLogin() sleep(5) #进入排行榜 self.poco("Ranking").click() sleep(1) if self.poco(text="What a surprise!").exists(): self.poco(text="No").click() sleep(1) if self.poco("Text_Title").get_text() == "Ranking": print("进入排行榜成功") #退出排行榜 self.poco("Btn_Back").click() sleep(1) if not self.poco("Text_Title").exists(): print("退出排行榜成功") #查看总榜 self.poco("Ranking").click() sleep(1) if self.poco(text="What a surprise!").exists(): self.poco(text="No").click() sleep(1) #查看巨星总榜 self.lookRanking("Total", "Superstar") #查看猎人总榜 self.lookRanking("Total", "Hunter") #查看工匠总榜 self.lookRanking("Total", "Craftsman") #查看巨星周榜 self.lookRanking("Weekly", "Superstar") #查看猎人周榜 self.lookRanking("Weekly", "Hunter") #查看工匠周榜 self.lookRanking("Weekly", "Craftsman") #领奖 self.myReward() #退出排行榜 self.poco("Btn_Back").click() #完成测试 stop_app("com.gameholic.drawsomethingbyspider") # sleep(2.0) # snapshot(msg="app stopped") print("ranking finish test")
def init_app(plat=SD.PLAT, package_name=SD.PACKAGE_NAME, app_path=SD.APP_PATH[SD.PLAT], sleep_time=SD.SLEEP_TIME, serialno=SD.SERIALNO): dev = None if plat == 'android': if SD.USE_ATX_SERVER2: atx_server2 = AtxServer2() device_info = atx_server2.get_usable_device_info() SD.UDID = device_info['udid'] serialno = device_info['source']['remoteConnectAddress'] if serialno and serialno.strip() != '': if re.search(r'127.0.0.1:\d+', serialno): logger.debug('模拟器用JAVACAP和ADBORI') dev = connect_device(f'Android:///{serialno}?cap_method=JAVACAP&ori_method=ADBORI') else: logger.debug(f'指定连接serialno: {serialno}') dev = connect_device(f'Android:///{serialno}') else: dev = connect_device('Android:///') wake() install_android_app(current_device().adb, app_path) stop_app(package_name) logger.debug(f'启动app:{package_name}') start_app(package_name) sleep(sleep_time / 1.5) elif plat == 'pc_editor': w = Windows() dev = UnityEditorWindow() w.keyevent('^P') # Ctrl+P运行 sleep(sleep_time / 2) dev.stop_app = w.app # 用于获取进程id,结束进程用 elif plat == 'pc_win': w = Windows() w.start_app(app_path) sleep(sleep_time) w.connect(process=w.app.process) dev = connect_device("Windows:///?class_name=UnityWndClass") dev.stop_app = w.app # elif plat == 'ios': # pass # elif plat == 'mac_editor': # pass return dev
def inner(*args, **kwargs): print(f"测试开始 {test_name}") start_case(test_name) from airtest.core.api import start_app, stop_app stop_app(app_package) start_app(app_package) recorder_queue.put(test_name) # 这里启动监控 result = None try: result = func(*args, **kwargs) except Exception as e: logger.error(e) logger.error(traceback.format_exc()) recorder_queue.put(DefaultConfig.RECORD_CASE_END_MARK) time.sleep(1) stop_app(app_package) print(f"测试结束 {test_name}") stop_case(test_name) time.sleep(5) return result
def testCommentNotEnoughCoins(self): self.permissionClick() self.autoUpdate() self.login("wn10002", "z123456") self.waitLogin() sleep(5) self.enterReward() #金币不足无法进入一个关卡 self.enterOneReward() #进入评论,输入星级和评论文字,点击评论,提示金币不足 self.poco("Tree").child()[0].child("Evaluate").click() sleep(1) self.startRating() self.enterCommnet() self.comment() #结束测试 stop_app("com.gameholic.drawsomethingbyspider") sleep(2.0) snapshot(msg="app stopped") print("finish test")
def testCommentNoPlayed(self): self.permissionClick() self.autoUpdate() self.login("wn10008", "z123456") self.waitLogin() sleep(5) self.enterReward() self.poco("Tree").child()[0].child("Evaluate").click() sleep(1) self.startRating() self.enterCommnet() self.comment() self.poco("Return").click() sleep(1) self.poco("Return").click() sleep(1) #结束测试 stop_app("com.gameholic.drawsomethingbyspider") sleep(2.0) snapshot(msg="app stopped") print("finish test")
def testBasicLevel(self): # init_device() self.permissionClick() self.autoUpdate() self.login("wn10001", "z123456") self.waitLogin() sleep(5) # self.self.poco = Unityself.poco() self.poco(text="Basic Stage").click() sleep(1) if self.poco("Up").child("Text").get_text() == "Select Stage": assert ("进入基础关卡成功") self.poco("Explain").click() sleep(1) if self.poco("zi").exists(): assert ("成功打开帮助") self.poco("confirm").click() sleep(1) if not self.poco("txt").exists(): assert ("成功关闭帮助界面") for _ in range(4): self.poco.swipe([50.0 / 720, 400.0 / 1280], [670.0 / 720, 400.0 / 1280]) sleep(3) self.poco("Content").offspring('Levelnum1').click() sleep(1) if self.poco("HPimage").exists(): assert ("成功进入具体关卡") sleep(1.0) self.poco("Return2").click() sleep(1) exitText = self.poco("lable").get_text() if exitText == "Are you sure you want to exit the game?": assert ("成功打开退出弹框") self.poco(text="Cancel").click() sleep(1) if not self.poco("lable").exists() and self.poco("HPimage").exists(): assert ("成功关闭退出弹框") self.poco("Return2").click() sleep(1) if exitText == "Are you sure you want to exit the game?": assert ("再次成功打开退出弹框") self.poco(text="OK").click() if self.poco("Up").child("Text").get_text() == "Select Stage": assert ("成功退出具体关卡") for _ in range(4): self.poco.swipe([670.0 / 720, 400.0 / 1280], [50.0 / 720, 400.0 / 1280]) sleep(3) if self.poco("WaitAfter").exists(): assert ("所有关卡都可以翻页") self.poco("Levelnum40").click() sleep(1) if not self.poco("HPimage").exists() and self.poco("Up").exists(): assert ("未解锁关闭无法进入") self.poco("Return").click() sleep(1) if self.poco("StartGame").exists(): assert ("返回主界面成功") stop_app("com.gameholic.drawsomethingbyspider") sleep(2.0) snapshot(msg="app stopped") print("basic level finish test")
def teardown(self): stop_app("com.gameholic.drawsomethingbyspider")
def tearDownModule(): stop_app('com.caibaopay.cashier')
def tearDown(self): stop_app(self.package_name)
def testRewardLevel(self): self.permissionClick() self.autoUpdate() self.login("wn10001", "z123456") self.waitLogin() sleep(7) player = self.getUserData() #进入悬赏关卡 self.enterReward() #查看帮助 self.rewardHelp() #切换标签测试 self.changeLabel() #列表滑动测试 self.swipeList() #筛选测试 #由于bug会复制filters,所以退出重进 self.filterOpen() self.switchFliters() self.cancelAll() self.recoveryFilters() #由于bug会复制filters,所以退出重进 self.poco("Return").click() sleep(1) self.poco("RewardLV").click() sleep(1) self.onlyMine(player) self.recoveryFilters() #具体关卡进入和退出 self.enterOneReward() #进入评论 self.poco("Tree").child()[0].child("Evaluate").click() sleep(1) #直接评论弹出星级不能为空 self.comment() # #输入星级再评论弹出文字不能为空 self.startRating() self.comment() # #输入文字再评论弹出评论成功 self.enterCommnet() self.comment() #点赞和踩 self.like() self.hate() #举报测试 self.reportLevel() self.poco("Btn_Back").click() sleep(1) #长按测试 self.longPress() stop_app("com.gameholic.drawsomethingbyspider") self.permissionClick() self.autoUpdate() self.login("wn10008", "z123456") self.waitLogin() sleep(5) self.enterReward() self.poco("Tree").child()[0].child("Evaluate").click() sleep(1) self.startRating() self.enterCommnet() self.comment() self.poco("Return").click() sleep(1) self.poco("Return").click() sleep(1) #结束测试 stop_app("com.gameholic.drawsomethingbyspider") sleep(2.0) snapshot(msg="app stopped") print("finish test")
def tearDownClass(cls): stop_app("com.gameholic.drawsomethingbyspider")
def stopApp(self,package,device): if G.DEVICE == None: connect_device(device) stop_app(package)
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 tearDownClass(cls): stop_app(cls.package_name) super(CalculatorCase, cls).tearDownClass()
def testHandBook(self): self.permissionClick() self.autoUpdate() self.login("wn10001", "z123456") self.waitLogin() sleep(5) #进入图鉴 # poco = UnityPoco() self.poco("Favorites").click() sleep(1) if self.poco(text="Handbook").get_text() == 'Handbook': print("进入图鉴成功") #查看帮助 self.poco("Explain").click() sleep(1) if self.poco("txt").exists(): print("打开帮助成功") self.poco("confirm").click() sleep(1) if not self.poco("txt").exists(): print("关闭帮助成功") #切换标签 self.poco("Text (1)").click() sleep(1) if self.poco("10102").exists(): print("切换悬赏关卡标签成功") self.poco(text="Basic Stage").click() sleep(1) if self.poco("Levelnum2001").exists(): print("切换基础关卡标签成功") #滑动列表 beforeSwipe = self.poco("Levelnum2001").child("thumbnail").child("Image").get_position() self.poco("OursLevel").swipe([0,-0.2]) sleep(2) afterSwipe = self.poco("Levelnum2001").child("thumbnail").child("Image").get_position() if beforeSwipe != afterSwipe: assert("滑动基础关卡图鉴成功") self.poco("OursLevel").swipe([0,0.4]) sleep(2) #查看具体图鉴 self.poco("Levelnum1").click() sleep(1) if self.poco(texture="zhizuoguanka_kuang").exists(): print("查看具体图鉴成功") #恢复图鉴状态 for _ in range(2): self.poco("Left").click() sleep(1) #读取第1、3张图位置 beforeSwipe1 = self.poco("Scroll View").child("Content").child("pic")[0].child("Panel").child("image").get_position() beforeSwipe3 = self.poco("Scroll View").child("Content").child("pic")[2].child("Panel").child("image").get_position() for _ in range(3): self.poco("BigPic").child("Middle").child("Scroll View").swipe([-0.4,0]) sleep(1) afterSwipe3 = self.poco("Scroll View").child("Content").child("pic")[2].child("Panel").child("image").get_position() if beforeSwipe3 != afterSwipe3: assert("向右滑动翻页成功") for _ in range(3): self.poco("BigPic").child("Middle").child("Scroll View").swipe([0.4,0]) sleep(1) afterSwipe1 = self.poco("Scroll View").child("Content").child("pic")[0].child("Panel").child("image").get_position() if beforeSwipe1 == afterSwipe1: assert("向左滑动翻页成功") for _ in range(2): self.poco("right").click() sleep(1) afterClick3 = self.poco("Scroll View").child("Content").child("pic")[2].child("Panel").child("image").get_position() if afterClick3 == afterSwipe3: assert("点击右翻页成功") for _ in range(2): self.poco("Left").click() sleep(1) afterClick1 = self.poco("Scroll View").child("Content").child("pic")[0].child("Panel").child("image").get_position() if afterClick1 == beforeSwipe1: assert("点击左翻页成功") self.poco("BigPic").child("Middle").child("Scroll View").click() if self.poco(text="Handbook").exists(): assert("关闭具体图鉴成功") #退出图鉴 self.poco("Return").click() sleep(1) if not self.poco(text="Handbook").exists(): print("退出图鉴成功") print("handBook finish test") #完成测试 stop_app("com.gameholic.drawsomethingbyspider") sleep(2.0) snapshot(msg="app stopped") print("finish test")
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 testMonsterBook(self): self.permissionClick() self.autoUpdate() self.login("wn10001", "z123456") self.waitLogin() sleep(5) #由于怪物图鉴重新安装游戏后会消失的bug存在,所以先进入一个关卡解锁一个怪物 self.poco(text="Basic Stage").click() sleep(1) for _ in range(4): self.poco.swipe([16.0 / 576, 400.0 / 1024], [560.0 / 576, 400.0 / 1024]) sleep(3) if self.poco("Levelnum1").child("thumbnail").child("Image").exists(): self.poco("Levelnum1").child("thumbnail").child("Image").click() sleep(1) self.poco("Return2").click() sleep(1) self.poco(text="OK").click() sleep(1) self.poco("Return").click() sleep(1) #进入图鉴 self.poco("MonsterCompose").click() sleep(1) if self.poco("Tree").child("LvTemplate(Clone)").child( "thumbnail").exists(): print("进入图鉴成功") #测试帮助 self.poco("Explain").click() sleep(1) helpText = self.poco("txt").get_text() if "Monsters illustrated" in helpText: print("打开帮助成功") self.poco("confirm").click() sleep(1) if not self.poco("zi").exists(): print("关闭帮助成功") #测试单个怪物 self.poco("Tree").child("LvTemplate(Clone)").child("thumbnail").click() sleep(1) if self.poco("MonsterInfo").exists(): print("查看具体怪物详情成功") self.poco("Return").click() sleep(1) if not self.poco("MonsterInfo").exists(): print("关闭具体怪物详情成功") #测试滑动 beforeSwipe = self.poco("Tree").child("LvTemplate(Clone)")[0].child( "thumbnail").get_position() self.poco("Viewport").swipe([0, -0.4]) sleep(2) afterSwipe = self.poco("Tree").child("LvTemplate(Clone)")[0].child( "thumbnail").get_position() assert_not_equal(beforeSwipe, afterSwipe, "滑动成功") #退出图鉴 self.poco("Return").click() sleep(1) if not self.poco("Tree").child("LvTemplate(Clone)").child( "thumbnail").exists(): print("退出怪物图鉴成功") #测试完成 stop_app("com.gameholic.drawsomethingbyspider") sleep(2.0) snapshot(msg="app stopped") print("monster handbook finish test")
def init_app(package: str): if package_opened(package): stop_app(package) start_app(package)