Exemple #1
0
    def case_music_favorite(self):
        self.case_if_music_base(True)
        time.sleep(1)
        if self.test.find_byclass(TextView, '歌曲', isText=True) is None:
            self.test.find_byacc(music_video_music_menu).click()
            time.sleep(0.2)
            self.test.find_list_byid(music_video_music_menu_title,
                                     '歌曲').click()
            time.sleep(1)
        tmp_int = random.randint(1, 8)
        test_name = f'music_{tmp_int}'
        self._find_music(test_name).click()
        time.sleep(1)

        self.test.find_byid(music_video_music_list_nowplay_icon).click()

        time.sleep(1)
        self.test.find_byid(music_video_music_list_song_name).click()
        time.sleep(1)
        self.test.find_byid(music_video_music_favorite).click()
        if self.test.if_toast_text('歌曲已添加到播放列表') is None:
            log('error', '添加到 收藏,未找到 toast')
        self.driver.press_keycode(4, 0, 0)
        time.sleep(1)
        self.test.find_byacc(music_video_music_menu).click()
        time.sleep(1)
        self.test.find_list_byid(music_video_music_menu_title, '播放列表').click()
        time.sleep(1)

        self._checK_play_list('我的收藏').click()
        time.sleep(1)
        tmp = self.test.find_byclass(TextView, test_name)
        if tmp is None:
            self.Case.fail(f'列表中没有音乐 {test_name}')
Exemple #2
0
    def case_record_and_save(self):
        """录音与保存文件"""
        if TestResult.getTestFail(self.failkey):
            self.Case.skipTest('case_if_base test fail,skip this')
        self.case_if_base()

        record = self.test.find_byid(record_recordbutton)
        if self.case_check_record_state() == 0:
            record.click()
            while self.test.wait_if_activity(Permissions_Activity, 5):
                self.test.find_byid(Permission_allow_button).click()
                time.sleep(3)
            log('info', f'开始录音')
            time.sleep(3)  # 录音3s
        elif self.case_check_record_state() == 1:
            log('info', f'正在录音中')
        record_stop = self.test.find_byid(record_stopbutton)
        record_stop.click()
        time.sleep(3)
        record_name = self.test.find_byid(record_filename).text
        record_name = record_name + '.amr'
        record_save = self.test.find_byid(record_savebutton)
        record_save.click()
        time.sleep(3)
        file = self.test.find_list_byid(record_listfilename, record_name, True)
        self.Case.assertIsNotNone(file, '文件未保存')
Exemple #3
0
 def addFailure(self, test: unittest.case.TestCase,
                err: sys.exc_info()) -> None:
     """测试fail时调用"""
     global testFail
     case = self.getTestCase(test)
     try:
         log('error', f'{case} : : fail : : {err[1]}')
     except UnicodeEncodeError:
         pass
     if self.log_text is not None:
         self.log_text.insert(
             "insert",
             f'[{TimeUtils.strTime()}]{case} : : fail : : {err[1]}\n')
         self.log_text.see("insert")
     testFail.append(str(test))
     self.testFail += 1
     self.report.bug_report(case,
                            log=err[1],
                            result='FAIL',
                            id=self.testsRun)
     Utils.save_logcat(case, Dvicer.get_log('logcat'))
     pkg = Dvicer.current_package
     if pkg != PKG:
         Dvicer.terminate_app(pkg)
     Dvicer.press_keycode(3, 0, 0)
Exemple #4
0
 def _send_AT(com_port, strAT='AT'):
     try:
         com_port.write(strAT.encode('utf-8') + b'\r\n')
         return True
     except (serial.SerialTimeoutException , serial.serialutil.SerialException) as error:
         log('ERROR',f'_send_AT : {error}')
         return False
def ExceptionApi(code, e):
    """
    接口异常处理
    :param code:
    :param e:
    :return:
    """
    exc_type, exc_value, exc_traceback = sys.exc_info()
    if DEBUG_LOG:
        # 文件形式
        if SAVE_LOG == 1:
            log().exception(e)
        # 数据库形式
        elif SAVE_LOG == 2:
            # 日志服务
            LogService().add(e, 1, 3)
    body = {}
    body['error_code'] = code
    body['error'] = True
    body['show'] = False
    body['debug_id'] = Utils.unique_id()
    dbSession.close()
    body['trackback'] = traceback.format_exception(exc_type, exc_value,
                                                   exc_traceback)
    return make_response(jsonify(body))
Exemple #6
0
 def addError(self, test: unittest.case.TestCase,
              err: sys.exc_info()) -> None:
     """测试用例出错时调用,一般是代码错误"""
     case = self.getTestCase(test)
     """""" ""
     tmp_list = traceback.format_tb(err[2])
     tmp_log = ''
     for x in tmp_list:
         if 'TestCases' in x:
             tmp_log = x
     tmp_log = re.sub('\n', '', tmp_log)
     tmp_log = tmp_log.split(",")
     tmp_log = tmp_log[len(tmp_log) - 1]
     tmp_text = f'{err[1]}|-|{tmp_log}'
     """""" """"""
     log('error', f'{case} : : error : : {tmp_list}')
     if self.log_text is not None:
         self.log_text.insert(
             "insert",
             f'[{TimeUtils.strTime()}]{case} : : error : :{err[0]}::{err[1]}\n'
         )
         self.log_text.see("insert")
     self.testError += 1
     self.report.bug_report(case,
                            log=tmp_text,
                            result='ERROR',
                            id=self.testsRun)
     Utils.save_logcat(case, Dvicer.get_log('logcat'))
     pkg = Dvicer.current_package
     if pkg != PKG:
         Dvicer.terminate_app(pkg)
     Dvicer.press_keycode(3, 0, 0)
Exemple #7
0
    def case_music_add_play_list(self):
        time_name = TimeUtils.str_HMS_Name()
        self.case_if_music_base(True)
        time.sleep(1)
        if self.test.find_byclass(TextView, '歌曲', isText=True) is None:
            self.test.find_byacc(music_video_music_menu).click()
            time.sleep(0.2)
            self.test.find_list_byid(music_video_music_menu_title,
                                     '歌曲').click()
            time.sleep(1)
        tmp_list = self.test.find_byid_list(music_video_music_indicator_list)
        tmp_int = random.randint(2, len(tmp_list) - 2)
        tmp_list[tmp_int].click()
        time.sleep(0.5)
        self.test.find_list_byid(ID_title, '添加到播放列表').click()
        time.sleep(0.5)
        self.test.find_list_byid(ID_title, '新建播放列表').click()
        time.sleep(0.5)
        tmp_el = self.test.find_byid(music_video_music_playlist_edit)
        tmp_el.clear()
        tmp_el.send_keys(f'list_{time_name}')
        self.test.find_byid(music_video_music_create_playlist).click()
        if self.test.if_toast_text('歌曲已添加到播放列表') is None:
            log('error', '添加到 收藏,未找到 toast')
        self.test.find_byacc(music_video_music_menu).click()
        time.sleep(1)
        self.test.find_list_byid(music_video_music_menu_title, '播放列表').click()
        time.sleep(1)

        self._checK_play_list(f'list_{time_name}').click()

        time.sleep(1)
        tmp = self.test.find_byclass(TextView, 'music_')
        if tmp is None:
            self.Case.fail('列表中没有音乐 {music_}')
Exemple #8
0
 def if_toast_text(self,text):
     toast = ('xpath',".//*[contains(@text,'"+text+"')]")
     try:
         return WebDriverWait(self.device,10,0.5).until(EC.presence_of_element_located(toast))
     except (NoSuchElementException,TimeoutException) as err:
         log('error', f'if_toast_text {text} : {err}')
         return None
Exemple #9
0
 def check_element(self, element):
     """检查 元素是否显示/存在"""
     try:
         return element.is_displayed()
     except NoSuchElementException as err:
         log('error', f'check_element {element} : {err}')
         return False
Exemple #10
0
 def find_byid(self, element_str):
     """根据ID 寻找元素"""
     try:
         return self.device.find_element_by_id(element_str)
     except NoSuchElementException as err:
         log('error', f'find_byid {element_str} : {err}')
         return None
Exemple #11
0
 def open_Uart(com, baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=1):
     try:
         com_port = serial.Serial(com, baudrate, bytesize, parity, stopbits, timeout)
         return True , com_port
     except (serial.SerialException, ValueError) as error:
         log('ERROR',f'open_Uart : {error}')
         return False , None
Exemple #12
0
 def check_element_enabled(self, element):
     """检查 元素是否显示/存在"""
     if element is None:
         return False
     try:
         return element.is_enabled()
     except NoSuchElementException as err:
         log('error', f'check_element {element} : {err}')
         return False
Exemple #13
0
 def push_video_to_device(self):
     """ push 视频 到设备 """
     for x in range(2):
         name = f'video_{x+1}.mp4'
         dest_path = f'/sdcard/{name}'
         data_path = f'{Utils.get_sys_path()}\\Resources\\{name}'
         try:
             with open(data_path,'rb') as f:
                 data = f.read()
             self.device.push_file(dest_path, base64.b64encode(data).decode('utf-8'))
         except (IOError, WebDriverException) as err:
             log('ERROR',f'push_video_to_device : {err}')
Exemple #14
0
 def addSuccess(self, test: unittest.case.TestCase) -> None:
     """测试pass时调用"""
     case = self.getTestCase(test)
     log('info', f'{case} : : pass')
     if self.log_text is not None:
         self.log_text.insert("insert",
                              f'[{TimeUtils.strTime()}]{case} : : pass\n')
         self.log_text.see("insert")
     self.testPass += 1
     self.report.bug_report(case,
                            log="*****",
                            result='PASS',
                            id=self.testsRun)
Exemple #15
0
 def find_list_byclass(self, element_str):
     """
     根据class寻找元素
     :param element_str: 元素class名称
     :return: 元素 list
     """
     try:
         tmp = self.device.find_elements_by_class_name(element_str)
         if len(tmp) == 0:
             return None
         return tmp
     except NoSuchElementException as err:
         log('error',f'find_byclass {element_str} : {err}')
         return None
Exemple #16
0
 def cv_FileManager_A_CallBack(self):
     global is_select_FileManager_A
     if is_select_FileManager_A % 2 == 0:
         is_select_FileManager_A += 1
         Utils.config_write('FileManager_A', True)
         log('info', 'FileManager_A test is_select')
         self.text.insert("insert", '文件管理器 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_FileManager_A += 1
         Utils.config_write('FileManager_A', False)
         log('info', 'FileManager_A test not_is_select')
         self.text.insert("insert", '文件管理器 测试未选择\n')
         self.text.see("insert")
Exemple #17
0
 def find_byid_list(self, element_str):
     """
     根据 同ID 的元素集合找到对应 text元素
     :param element_str: 元素ID
     :return: 元素控件 list
     """
     try:
         els = self.device.find_elements_by_id(element_str)
         if len(els) == 0:
             return None
         return els
     except NoSuchElementException as err:
         log('error', f'find_list_byid  {element_str}: {err}')
         return None
Exemple #18
0
 def cv_camera_CallBack(self):
     global is_select_camera
     if is_select_camera % 2 == 0:
         is_select_camera += 1
         Utils.config_write('CAMERA_A', True)
         log('info', 'camera  A test is_select')
         self.text.insert("insert", '相机 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_camera += 1
         Utils.config_write('CAMERA_A', False)
         log('info', 'camera  A test not_is_select')
         self.text.insert("insert", '相机 测试未选择\n')
         self.text.see("insert")
Exemple #19
0
 def cv_gallery_CallBack(self):
     global is_select_gallery
     if is_select_gallery % 2 == 0:
         is_select_gallery += 1
         Utils.config_write('GALLERY_A', True)
         log('info', 'GALLERY A test is_select')
         self.text.insert("insert", '图库 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_gallery += 1
         Utils.config_write('GALLERY_A', False)
         log('info', 'GALLERY A test not_is_select')
         self.text.insert("insert", '图库 测试未选择\n')
         self.text.see("insert")
Exemple #20
0
 def cv_MESSAGING_CallBack(self):
     global is_select_MESSAGING
     if is_select_MESSAGING % 2 == 0:
         is_select_MESSAGING += 1
         Utils.config_write('MESSAGING', True)
         log('info', 'MESSAGING test is_select')
         self.text.insert("insert", '短信 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_MESSAGING += 1
         Utils.config_write('MESSAGING', False)
         log('info', 'MESSAGING test not_is_select')
         self.text.insert("insert", '短息 测试未选择\n')
         self.text.see("insert")
Exemple #21
0
 def cv_SETTINGS_A_CallBack(self):
     global is_select_SETTINGS_A
     if is_select_SETTINGS_A % 2 == 0:
         is_select_SETTINGS_A += 1
         Utils.config_write('SETTINGS_A', True)
         log('info', 'SETTINGS_A test is_select')
         self.text.insert("insert", '设置 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_SETTINGS_A += 1
         Utils.config_write('SETTINGS_A', False)
         log('info', 'SETTINGS_A test not_is_select')
         self.text.insert("insert", '设置 测试未选择\n')
         self.text.see("insert")
Exemple #22
0
 def cv_video_A_CallBack(self):
     global is_select_VIDEO_A
     if is_select_VIDEO_A % 2 == 0:
         is_select_VIDEO_A += 1
         Utils.config_write('VIDEO_A', True)
         log('info', 'VIDEO_A test is_select')
         self.text.insert("insert", '视频 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_VIDEO_A += 1
         Utils.config_write('VIDEO_A', False)
         log('info', 'VIDEO_A test not_is_select')
         self.text.insert("insert", '视频 测试未选择\n')
         self.text.see("insert")
Exemple #23
0
 def select_d(self):
     global is_select_D
     if is_select_D % 2 == 0:
         is_select_D += 1
         Utils.config_write('D', True)
         log('info', 'level D test is_select')
         self.text.insert("insert", '优先级 D 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_D += 1
         Utils.config_write('D', False)
         log('info', 'level D not_is_select')
         self.text.insert("insert", '优先级 D 测试未选择\n')
         self.text.see("insert")
Exemple #24
0
 def select_b(self):
     global is_select_B
     if is_select_B % 2 == 0:
         is_select_B += 1
         Utils.config_write('B', True)
         log('info', 'level B test is_select')
         self.text.insert("insert", '优先级 B 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_B += 1
         Utils.config_write('B', False)
         log('info', 'level B  test not_is_select')
         self.text.insert("insert", '优先级 B 测试未选择\n')
         self.text.see("insert")
Exemple #25
0
 def select_c(self):
     global is_select_C
     if is_select_C % 2 == 0:
         is_select_C += 1
         Utils.config_write('C', True)
         log('info', 'level C test is_select')
         self.text.insert("insert", '优先级 C 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_C += 1
         Utils.config_write('C', False)
         log('info', 'level C not_is_select')
         self.text.insert("insert", '优先级 C 测试未选择\n')
         self.text.see("insert")
Exemple #26
0
 def cv_Music_A_CallBack(self):
     global is_select_Music_A
     if is_select_Music_A % 2 == 0:
         is_select_Music_A += 1
         Utils.config_write('MUSIC_A', True)
         log('info', 'MUSIC_A test is_select')
         self.text.insert("insert", '音乐 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_Music_A += 1
         Utils.config_write('MUSIC_A', False)
         log('info', 'MUSIC_A test not_is_select')
         self.text.insert("insert", '音乐 测试未选择\n')
         self.text.see("insert")
Exemple #27
0
 def select_a(self):
     global is_select_A
     if is_select_A % 2 == 0:
         is_select_A += 1
         Utils.config_write('A', True)
         log('info', 'level A test is_select')
         self.text.insert("insert", '优先级 A 测试已选择\n')
         self.text.see("insert")
     else:
         is_select_A += 1
         Utils.config_write('A', False)
         log('info', 'level A  test not_is_select')
         self.text.insert("insert", '优先级 A 测试未选择\n')
         self.text.see("insert")
Exemple #28
0
 def addSkip(self, test: unittest.case.TestCase, reason: str) -> None:
     """跳过的测试时调用"""
     case = self.getTestCase(test)
     log('debug', f'{case} : : skip: : {reason}')
     if self.log_text is not None:
         self.log_text.insert(
             "insert",
             f'[{TimeUtils.strTime()}]{case} : : skip: : {reason}\n')
         self.log_text.see("insert")
     self.testSkip += 1
     self.report.bug_report(case,
                            log=reason,
                            result='SKIP',
                            id=self.testsRun)
     #Dvicer.terminate_app(Dvicer.current_package)
     Dvicer.press_keycode(3, 0, 0)
Exemple #29
0
 def find_byacc(self, element_str):
     """
     根据 accessibility_id 寻找元素
     :param element_str: 元素 accessibility_id
     :return: 元素控件
     """
     for x in range(3):
         try:
             el = self.device.find_element_by_accessibility_id(element_str)
             if self.check_element(el):
                 return el
             else:
                 time.sleep(1)
         except NoSuchElementException as err:
             log('error', f'find_byacc  {element_str} : {err}')
             return None
     return None
Exemple #30
0
 def find_number_byid(self, element_str ,keytext):
     """
     根据 同ID 的元素集合找到对应 text元素
     :param element_str: 元素ID
     :param keytext: 元素 text
     :return: 该控件存在的数量
     """
     tmp = 0
     try:
         els = self.device.find_elements_by_id(element_str)
     except NoSuchElementException as err:
         log('error', f'find_list_byid  {element_str}  {keytext}: {err}')
         return tmp
     for el in els:
         if keytext in el.text:
             tmp += 1
     return tmp