Exemplo n.º 1
0
    def _sync_status(self):
        dm = gl.get_value('dm')
        self.aria2 = gl.get_value('aria2')
        options = None
        if self.aria2 is not None:
            ret = self.aria2.get_system_option()
            if ret is not None:
                options = ret['result']
        is_enable = False
        if options is not None:
            is_enable = True
            self.edit_save_path.setText(options['dir'])
            self.spin_thread_count.setValue(
                int(options['max-concurrent-downloads']))

        self.edit_save_path.setEnabled(is_enable)
        self.spin_thread_count.setEnabled(is_enable)
        self.edit_url.setEnabled(is_enable)
        self.button_bt_file.setEnabled(is_enable)
        self.edit_name.setEnabled(is_enable)
        self.button_ok.setEnabled(is_enable)
        self.button_select_folder.setEnabled(is_enable)

        if not dm.settings.values['IS_LOCALE']:
            self.button_select_folder.setEnabled(False)

        self.setWindowModality(Qt.ApplicationModal)
Exemplo n.º 2
0
 def __init__(self, gid):
     super().__init__()
     self.gid = gid
     self.aria2 = gl.get_value('aria2')
     setting = gl.get_value('settings')
     self.sleep_seconds = setting.values['REFRESH']
     gl.signals.value_changed.connect(self._on_value_changed)
Exemplo n.º 3
0
def run_test(sheet, module, url):
    """执行测试用例"""
    total_fail = 0
    testDetailList = []
    testCases = get_test_cases(sheet)
    tsum = len(testCases)

    for testCase in testCases:
        logging.info("Number %s", testCase["testNumber"])
        logging.info("CaseNmae %s", testCase["testName"])
        fail = 0
        #判断是否有sql需要先执行
        if testCase["pre_sql"] is not None and testCase["pre_sql"] != "":
            prepare_data(gl.get_value("dbhost"), gl.get_value("user"), gl.get_value("password"), gl.get_value("dbname"), str(testCase["pre_sql"]))
        # 判断是否需要替换参数化的testData
        if testCase["replace"] is not None and testCase["replace"] != "":
            replace_data(testCase)
        # 2.执行原用例
        testResponse, actualCode = excute_case(testCase, url)

        if testResponse is None:
            testResponse = 'response is null'

        # print str ( actualCode ), str ( expectCode )
        if actualCode is None or actualCode == 'RequestIsERROR':
            logging.error("Request is ERROR! %s", testCase["testNumber"])
            logging.info("----------Next Case----------")
            fail += 1
            total_fail += 1
        elif str(actualCode) != str(testCase["testHopeCode"]):
            logging.info("Fail: %s", testCase["testNumber"])
            logging.info("----------Next Case----------")
            fail += 1
            total_fail += 1
        else:
            # 用例执行成功后,判断是否需要存储response值
            if testCase["store"] is not None and testCase["store"] != "":
                store_data(testCase["store"], testResponse, testCase["testNumber"])

        if fail > 0:
            result = False
        else:
            logging.info("Pass: %s", testCase["testNumber"])
            logging.info("----------Next Case----------")
            result = True

        # 获取每次执行用例结果
        testDetail = report.get_test_detail(t_id=testCase["testNumber"], t_name=testCase["testName"],
                                            t_method=testCase["testMethod"], t_url=testCase["testUrl"],
                                            t_param=json.dumps(testCase["testData"]), t_response=testResponse,
                                            t_hope=testCase["testHopeCode"],
                                            t_actual=actualCode,
                                            t_result=result)
        testDetailList.append(testDetail)

    # 获取测试结果
    testSumInfo = report.get_test_suminfo(test_sum=tsum, test_success=tsum - total_fail, test_failed=total_fail)
    testDetailInfo = report.get_all_test_detail(testDetailList)

    return testSumInfo, testDetailInfo
Exemplo n.º 4
0
    def _command(self):
        sender = self.sender()
        dm = gl.get_value('dm')
        if (sender is self.command_details) or (sender is self.label_filename):
            dm.main_wnd.show_details(self.task)
        elif sender is self.command_open:
            if not dm.settings.values['IS_LOCALE']:
                QMessageBox.warning(self,
                                    self.tr('Warn'),
                                    self.tr("Can't open folder when in remote mode"),
                                    QMessageBox.Ok)
                return
            file_name = self.get_task_name(self.task)
            try:
                path = os.path.join(self.task['dir'], file_name)
                path = os.path.abspath(path)
                print(path)
                os.system('explorer /e,/select,{}'.format(path))
            except FileNotFoundError as err:
                print(err)
        elif sender is self.command_delete:
            if QMessageBox.question(self, self.tr('Warn'), self.tr("Are you sure to delete this task?"), QMessageBox.Ok | QMessageBox.No) == QMessageBox.No:
                return
            is_detect_file = False
            if dm.settings.values['IS_LOCALE']:
                file_name = self.get_task_name(self.task)
                path = os.path.join(self.task['dir'], file_name)
                path = os.path.abspath(path)
                if os.path.exists(path) and \
                        QMessageBox.question(self,
                                             self.tr('Question'),
                                             self.tr('Are you sure to delete file{} of this task?').format(path),
                                             QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes:
                    is_detect_file = True
            else:
                path = ''
            aria2 = gl.get_value('aria2')
            if self.task["status"] in ('active', 'waiting', 'paused'):
                aria2.remove(self.task['gid'])

                while True:
                    try:
                        ret = aria2.get_status(self.task['gid'])
                    except:
                        break
                    if ret['result']['status'] == 'removed':
                        break
                    time.sleep(0.5)

            aria2.remove_stoped(self.task['gid'])
            if is_detect_file:
                _thread.start_new_thread(self.thread_delete_file, (path, ))
        aria2 = gl.get_value('aria2')
        aria2.save_session()
Exemplo n.º 5
0
    def on_ok(self):
        self.settings.values['LANGUAGE'] = self.combox_language.currentIndex()
        self.settings.values["REFRESH"] = self.spin_refresh.value()

        self.settings.values["IS_LOCALE"] = self.radio_local.isChecked()

        url = {
            'addr': self.edit_remote_addr.currentText(),
            'token': self.edit_remote_token.text()
        }
        self.settings.values['REMOTE']["SERVER_ADDRESS"] = url['addr']
        self.settings.values['REMOTE']["SERVER_TOKEN"] = url['token']
        if url not in self.settings.values['REMOTE']['SERVER_HISTORY']:
            self.settings.values['REMOTE']['SERVER_HISTORY'].append(url)

        self.settings.values['LOCALE'][
            "SERVER_PORT"] = self.edit_locale_port.text()
        self.settings.values['LOCALE'][
            "SERVER_TOKEN"] = self.edit_locale_token.text()
        self.settings.values['LOCALE']['ARIA2'] = self.edit_aria2.text()
        params = self.edit_aria2_params.toPlainText()
        self.settings.values['LOCALE']['PARAMS'].clear()
        for line in params.split('\n'):
            self.settings.values['LOCALE']['PARAMS'].append(line)
        self.settings.values['LOCALE'][
            "DOWNLOAD_DIR"] = self.edit_download_folder.text()
        self.settings.values['LOCALE'][
            'KEEP_RUNNING'] = self.checkbox_keep_running.isChecked()
        self.settings.save()
        gl.set_value("settings", self.settings)
        dm = gl.get_value('dm')
        dm.init_aria2()
        dm.main_wnd.left_widget.setCurrentRow(0)
Exemplo n.º 6
0
    def __init__(self, parent):
        super().__init__(parent)

        self.setObjectName('UiAbout')

        main_layout = QVBoxLayout(self)
        main_layout.setAlignment(Qt.AlignCenter)
        dm = gl.get_value('dm')
        label_name = QLabel('{0} {1}'.format(dm.app_name, dm.app_version))
        label_name.setObjectName('application_name')
        main_layout.addWidget(label_name)
        btn_address = QCommandLinkButton(self.tr("Website ({0})").format(dm.app_url))
        btn_address.clicked.connect(self.on_open_website)
        main_layout.addWidget(btn_address)
        label_name = QLabel()
        main_layout.addWidget(label_name)

        aria_info = QVBoxLayout()
        main_layout.addLayout(aria_info)

        label_title = QLabel(self.tr('About Aria2'))
        aria_info.addWidget(label_title)

        self.label_version = QLabel()
        aria_info.addWidget(self.label_version)

        self.edit_feature = QTextEdit()
        self.edit_feature.setReadOnly(True)
        aria_info.addWidget(self.edit_feature)

        self._value_changed('aria2')
Exemplo n.º 7
0
 def _command(self):
     sender = self.sender()
     if sender is self.command_unpause:
         aria2 = gl.get_value('aria2')
         aria2.unpause(self.task['gid'])
         aria2.save_session()
     else:
         super()._command()
Exemplo n.º 8
0
 def _refresh_task(self, is_successed, task, peers):
     aria2 = gl.get_value('aria2')
     if aria2 is None or not is_successed:
         return
     try:
         self._update_task(task, peers)
         self.task = task
     except Exception as err:
         logging.error('_refresh_task: {}'.format(err))
Exemplo n.º 9
0
 def on_back(self):
     task_count = len(self.backup_tasks)
     if task_count == 0:
         dm = gl.get_value('dm')
         self.thread_refresh.exit()
         dm.main_wnd.show_normal()
         return
     last = self.backup_tasks[task_count - 1]
     self.backup_tasks.pop(task_count - 1)
     self._goto_task(last)
Exemplo n.º 10
0
    def _on_open_file(self):
        file = self.sender().whatsThis()
        dm = gl.get_value('dm')
        if not dm.settings.values['IS_LOCALE']:
            QMessageBox.warning(
                self, self.tr('Warn'),
                self.tr("Can't open folder when in remote mode"),
                QMessageBox.Ok)
            return

        os.system('explorer /e,/select,{}'.format(os.path.abspath(file)))
Exemplo n.º 11
0
 def _command(self):
     sender = self.sender()
     if sender is self.command_pause:
         aria2 = gl.get_value('aria2')
         ret = aria2.pause(self.task['gid'])
         if ret is None:
             # force pause
             aria2.pause(self.task['gid'], True)
         aria2.save_session()
     else:
         super()._command()
Exemplo n.º 12
0
 def _goto_task(self, gid):
     if len(self.backup_tasks) > 0:
         self.tab.setTabText(
             0,
             self.tr('<<Go back ({})').format(len(self.backup_tasks)))
     else:
         self.tab.setTabText(0, self.tr('<<Go back'))
     aria2 = gl.get_value('aria2')
     try:
         ret = aria2.get_status(gid)
         self.update_task(ret['result'])
     except:
         QMessageBox.warning(self, self.tr('Warn'),
                             self.tr("Can't find this task"),
                             QMessageBox.Ok)
         return
Exemplo n.º 13
0
    def _value_changed(self, name):
        if name == 'aria2':
            aria2 = gl.get_value(name)
            if aria2 is None:
                return
            ret = aria2.get_version()
            self.label_version.setText(self.tr('Version: ') + ret['result']['version'])
            msg = self.tr('Features:') + '\n'
            for f in ret['result']['enabledFeatures']:
                msg = msg + '\t' + f + '\n'

            ret = aria2.list_methods()
            msg = msg + self.tr('Methods:') + '\n'
            for f in ret['result']:
                msg = msg + '\t' + f + '\n'

            self.edit_feature.setText(msg)
Exemplo n.º 14
0
 def close(self):
     dm = gl.get_value('dm')
     dm.main_wnd.left_widget.setCurrentRow(0)
Exemplo n.º 15
0
    def __init__(self, parent):
        super().__init__(parent)
        dm = gl.get_value('dm')
        self.settings = dm.settings
        self.setObjectName('UiSetting')

        self.setWindowTitle(self.tr("Settings"))

        self.main_layout = QGridLayout(self)
        self.main_layout.setContentsMargins(60, 60, 20, 20)
        row = 0

        label_language = QLabel(self.tr("Language:"))
        label_language.setFixedHeight(28)
        self.main_layout.addWidget(label_language, row, 0)
        self.combox_language = QComboBox()
        self.combox_language.setFixedHeight(28)
        self.main_layout.addWidget(self.combox_language, row, 1)
        row = row + 1

        label_refresh = QLabel(self.tr("Refresh rate:"))
        label_refresh.setFixedHeight(28)
        self.main_layout.addWidget(label_refresh, row, 0)
        self.spin_refresh = QSpinBox()
        self.spin_refresh.setFixedHeight(28)
        self.spin_refresh.setMinimum(1)
        self.spin_refresh.setMaximum(60)
        self.spin_refresh.setValue(self.settings.values['REFRESH'])
        self.main_layout.addWidget(self.spin_refresh, row, 1)
        label_sec = QLabel(self.tr('second(s)'))
        self.main_layout.addWidget(label_sec, row, 2)
        row = row + 1

        self.radio_remote = QRadioButton(self.tr("Remote"))
        self.radio_remote.clicked.connect(self.on_changed_type)
        self.main_layout.addWidget(self.radio_remote, row, 0)
        row = row + 1

        label_url = QLabel(self.tr("Server address:"))
        label_url.setFixedHeight(28)
        self.main_layout.addWidget(label_url, row, 1)

        self.edit_remote_addr = QComboBox(
        )  # QLineEdit(self.settings.values['REMOTE']['SERVER_ADDRESS'])
        self.edit_remote_addr.currentTextChanged.connect(
            self.on_changed_remote_addr)
        self.edit_remote_addr.setEditable(True)
        self.edit_remote_addr.setFixedHeight(28)
        self.main_layout.addWidget(self.edit_remote_addr, row, 2, 1, 2)
        row = row + 1

        label_token = QLabel(self.tr("Token:"))
        label_token.setFixedHeight(28)
        self.main_layout.addWidget(label_token, row, 1)
        self.edit_remote_token = QLineEdit(
            self.settings.values['REMOTE']['SERVER_TOKEN'])
        self.edit_remote_token.setFixedHeight(28)
        self.main_layout.addWidget(self.edit_remote_token, row, 2, 1, 2)
        row = row + 1

        self.radio_local = QRadioButton(self.tr("Local"))
        self.radio_local.clicked.connect(self.on_changed_type)
        self.main_layout.addWidget(self.radio_local, row, 0)
        row = row + 1

        label_token = QLabel(self.tr("Port:"))
        label_token.setFixedHeight(28)
        self.main_layout.addWidget(label_token, row, 1)
        self.edit_locale_port = QLineEdit(
            self.settings.values['LOCALE']['SERVER_PORT'])
        self.edit_locale_port.setFixedHeight(28)
        self.main_layout.addWidget(self.edit_locale_port, row, 2, 1, 2)
        row = row + 1

        label_token = QLabel(self.tr("Token:"))
        label_token.setFixedHeight(28)
        self.main_layout.addWidget(label_token, row, 1)
        self.edit_locale_token = QLineEdit(
            self.settings.values['LOCALE']['SERVER_TOKEN'])
        self.edit_locale_token.setFixedHeight(28)
        self.main_layout.addWidget(self.edit_locale_token, row, 2, 1, 2)
        row = row + 1

        label_name = QLabel(self.tr('Aria2 path:'))
        self.main_layout.addWidget(label_name, row, 1, 1, 2)
        self.edit_aria2 = QLineEdit()
        self.edit_aria2.setFixedHeight(28)
        self.main_layout.addWidget(self.edit_aria2, row, 2, 1, 2)
        self.button_select_aria = QPushButton('...')
        self.button_select_aria.setFixedHeight(28)
        self.button_select_aria.clicked.connect(self.on_select_aria)
        self.main_layout.addWidget(self.button_select_aria, row, 4)
        row = row + 1

        label_name = QLabel(self.tr('Aria2 parameters:'))
        self.main_layout.addWidget(label_name, row, 1, 1, 2, Qt.AlignTop)
        # row = row + 1
        self.edit_aria2_params = QTextEdit()
        self.main_layout.addWidget(self.edit_aria2_params, row, 2, 1, 3)
        row = row + 1

        label_name = QLabel(self.tr("Save path:"))
        self.main_layout.addWidget(label_name, row, 1)
        self.edit_download_folder = QLineEdit()
        self.main_layout.addWidget(self.edit_download_folder, row, 2, 1, 2)
        self.button_select_download_folder = QPushButton("...")
        self.button_select_download_folder.clicked.connect(
            self.on_change_download_path)
        self.main_layout.addWidget(self.button_select_download_folder, row, 4)
        row = row + 1

        self.checkbox_keep_running = QCheckBox(
            self.tr('Keep background downloads when closed this application'))
        self.main_layout.addWidget(self.checkbox_keep_running, row, 1, 1, 2,
                                   Qt.AlignTop)
        row = row + 1

        self.button_ok = QPushButton(self.tr("OK"))
        self.button_ok.setFixedHeight(32)
        self.button_ok.clicked.connect(self.on_ok)
        self.main_layout.addWidget(self.button_ok, row, 1)

        button_cancel = QPushButton(self.tr("Cancel"))
        button_cancel.setFixedHeight(32)
        button_cancel.clicked.connect(self.close)
        self.main_layout.addWidget(button_cancel, row, 3)

        self.setWindowModality(Qt.ApplicationModal)

        for url in self.settings.values['REMOTE']['SERVER_HISTORY']:
            self.edit_remote_addr.addItem(url['addr'])
        self.edit_remote_addr.setCurrentText(
            self.settings.values['REMOTE']['SERVER_ADDRESS'])

        self.edit_aria2.setText(self.settings.values['LOCALE']['ARIA2'])
        self.radio_local.setChecked(self.settings.values['IS_LOCALE'])
        self.radio_remote.setChecked(not self.settings.values['IS_LOCALE'])
        params = ''
        for p in self.settings.values['LOCALE']['PARAMS']:
            if params != '':
                params = params + '\n'
            params = params + p
        self.edit_aria2_params.setText(params)
        download_path = os.path.join(os.path.expanduser('~'), 'Downloads')
        folder = self.settings.values['LOCALE']["DOWNLOAD_DIR"]
        folder = folder.replace('${DOWNLOAD}', download_path)
        self.edit_download_folder.setText(folder)

        for language in self.settings.values['LANGUAGES']:
            self.combox_language.addItem(language['NAME'])
        curr_language = self.settings.values['LANGUAGE']
        self.combox_language.setCurrentText(
            self.settings.values['LANGUAGES'][curr_language]['NAME'])

        self.checkbox_keep_running.setChecked(
            self.settings.values['LOCALE']["KEEP_RUNNING"])
        self.on_changed_type()
Exemplo n.º 16
0
 def close(self):
     dm = gl.get_value('dm')
     dm.main_wnd.left_widget.setCurrentRow(0)
     super(UiNewTask, self).close()
Exemplo n.º 17
0
 def start(self, priority=QThread.NormalPriority):
     self.is_quit = False
     self.aria2 = gl.get_value('aria2')
     settings = gl.get_value('settings')
     self.sleep_seconds = settings.values['REFRESH']
     super().start(priority)
Exemplo n.º 18
0
 def on_open_website(self):
     dm = gl.get_value('dm')
     webbrowser.open(dm.app_url)