def run_testcase(self):
        """执行测试用例"""
        self.handle_excel = HandleExcel(file_path=self.path.get())
        try:
            case_sheets = self.get_all_testcases_sheetname()
            for i in range(len(case_sheets)):
                caseStepList = self.add_testcase_step_by_sheetname(
                    case_sheets[i].sheet_name)
                start = time.time()
                result = self.excute_testcases(caseStepList)
                end = time.time()
                self.handle_excel.set_sheet_index_or_name("测试用例")
                execute_time = "%.2fs" % (end - start)
                if result == "pass":
                    self.handle_excel.write_cell_result(i + 1, 5, result)
                else:
                    self.handle_excel.write_cell_result(
                        i + 1, 5, result, "red")
                self.handle_excel.write_cell_result(i + 1, 6, execute_time,
                                                    "white")

        except:
            raise
Esempio n. 2
0
 def __init__(self, case_name=None):
     self.case_name = case_name
     self.handle_excel = HandleExcel(self.case_name)
Esempio n. 3
0
class HandleTestCase():
    """第三版selenium关键字驱动,测试用例设计与执行"""
    def __init__(self, case_name=None):
        self.case_name = case_name
        self.handle_excel = HandleExcel(self.case_name)

    def get_all_testcases_sheetname(self):
        """获取所有测试用例"""
        self.handle_excel.set_sheet_index_or_name("测试用例")
        case_lines = self.handle_excel.get_max_rows
        case_sheets = []
        for i in range(1, case_lines):
            # 创建一个对象来设置其属性,并讲需要数据赋给属性
            testcase_info = TestCaseStepInfo()
            case_name = self.handle_excel.get_cell(i, 3)
            is_true = self.handle_excel.get_cell(i, 4)
            if bool(case_name) and eval(is_true):
                # 原本在Common包下创建一个CaseInfo类来接收需要执行的测试用例的sheet_name
                # case = CaseInfo(case_name)
                # case_sheets.append(case)
                setattr(testcase_info, "sheet_name", case_name)
                case_sheets.append(testcase_info)
        return case_sheets

    def add_testcase_step_by_sheetname(self, case_sheet):
        '''加载整个sheet的操作步骤'''
        caseStepList = []
        self.handle_excel.set_sheet_index_or_name(case_sheet)
        case_steps = self.handle_excel.get_max_rows
        for k in range(1, case_steps):
            # 创建一个对象来设置其属性,并讲需要数据赋给属性
            casestep_info = TestCaseStepInfo()
            step_name = self.handle_excel.get_cell(k, 1)
            key_words = self.handle_excel.get_cell(k, 2)
            locator = self.handle_excel.get_cell(k, 3)
            content = self.handle_excel.get_cell(k, 4)
            if key_words == "" or step_name == "":
                break
            setattr(casestep_info, "step_name", step_name)
            setattr(casestep_info, "key_words", key_words)
            setattr(casestep_info, "locator", locator)
            setattr(casestep_info, "content", content)
            # 原本在Common包下创建一个TestCaseStepInfo类来接收需要执行的测试用例sheet_name的所有测试步骤
            # step_info = TestCaseStepInfo(step_name, key_words, locator, content)
            # caseStepList.append(step_info)
            caseStepList.append(casestep_info)
        return caseStepList

    def excute_testcases(self, caseStepList):
        '''执行测试用例步骤'''
        for i in range(len(caseStepList)):
            start = time.time()
            try:
                res = run_keywords_method(key_words=caseStepList[i].key_words,
                                          locator=caseStepList[i].locator,
                                          content=caseStepList[i].content)
                execute_time = "{:.2f}s".format(time.time() - start)
            except:
                execute_time = "{:.2f}s".format(time.time() - start)
                self.handle_excel.write_cell_result(i + 1, 6, res, "red")
                return "failed"
            else:
                self.handle_excel.write_cell_result(i + 1, 6, res)
            finally:
                self.handle_excel.write_cell_result(i + 1, 7, execute_time,
                                                    "white")
        return "pass"

    def run_testcase(self):
        '''执行测试用例'''
        try:
            case_sheets = self.get_all_testcases_sheetname()
            for i in range(len(case_sheets)):
                caseStepList = self.add_testcase_step_by_sheetname(
                    case_sheets[i].sheet_name)
                start = time.time()
                result = self.excute_testcases(caseStepList)
                end = time.time()
                self.handle_excel.set_sheet_index_or_name("测试用例")
                execute_time = "%.2fs" % (end - start)
                if result == "pass":
                    self.handle_excel.write_cell_result(i + 1, 5, result)
                else:
                    self.handle_excel.write_cell_result(
                        i + 1, 5, result, "red")
                self.handle_excel.write_cell_result(i + 1, 6, execute_time,
                                                    "white")

        except:
            raise
class Application(tkinter.Frame):
    """第④版selenium关键字驱动,测试用例设计与执行"""

    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
#         self.pack()
        self.path = tkinter.StringVar()
        self.create_application()

    def create_application(self):
        #         self.master.geometry("600*300")
        #         输入框,标记,按键
        tkinter.Button(self.master, text="选择用例", command=self._selectPath).grid(
            row=0, column=1)
        # 输入框绑定变量path
        tkinter.Entry(self.master, textvariable=self.path).grid(
            row=0, column=2)
        tkinter.Button(self.master, text="开始测试", command=self.run_testcase, fg="green").grid(
            row=0, column=3)

    @logger("获取执行用例的sheetname")
    def get_all_testcases_sheetname(self):
        """获取所有测试用例"""
        self.handle_excel.set_sheet_index_or_name("测试用例")
        case_lines = self.handle_excel.get_max_rows
        case_sheets = []
        for i in range(1, case_lines):
            # 创建一个对象来设置其属性,并讲需要数据赋给属性
            testcase_info = TestCaseStepInfo()
            case_name = self.handle_excel.get_cell(i, 3)
            is_true = self.handle_excel.get_cell(i, 4)
            if bool(case_name) and eval(is_true):
                # 原本在Common包下创建一个CaseInfo类来接收需要执行的测试用例的sheet_name
                # cases = CaseInfo(case_name)
                # case_sheets.append(cases)
                setattr(testcase_info, "sheet_name", case_name)
                case_sheets.append(testcase_info)
        return case_sheets

    @logger("获取执行用例的step_info")
    def add_testcase_step_by_sheetname(self, case_sheet):
        """加载整个sheet的操作步骤"""
        caseStepList = []
        self.handle_excel.set_sheet_index_or_name(case_sheet)
        case_steps = self.handle_excel.get_max_rows
        for k in range(1, case_steps):
            # 创建一个对象来设置其属性,并讲需要数据赋给属性
            casestep_info = TestCaseStepInfo()
            step_name = self.handle_excel.get_cell(k, 1)
            key_words = self.handle_excel.get_cell(k, 2)
            locator = self.handle_excel.get_cell(k, 3)
            content = self.handle_excel.get_cell(k, 4)
            if key_words == "" or step_name == "":
                break
            setattr(casestep_info, "step_name", step_name)
            setattr(casestep_info, "key_words", key_words)
            setattr(casestep_info, "locator", locator)
            setattr(casestep_info, "content", content)
            caseStepList.append(casestep_info)
            # 原本在Common包下创建一个TestCaseStepInfo类来接收需要执行的测试用例sheet_name的所有测试步骤
            # step_info = CaseStepList(step_name, key_words, locator, content)
            # caseStepList.append(step_info)
        return caseStepList

    @logger("按步骤执行用例")
    def excute_testcases(self, caseStepList):
        """执行测试用例步骤"""
        for i in range(len(caseStepList)):
            start = time.time()
            res = run_keywords_method(key_words=caseStepList[
                                      i].key_words, locator=caseStepList[i].locator, content=caseStepList[i].content)
            if res == "pass":
                execute_time = "{:.2f}s".format(time.time() - start)
                self.handle_excel.write_cell_result(i + 1, 5, res, "green")
            else:
                execute_time = "{:.2f}s".format(time.time() - start)
                self.handle_excel.write_cell_result(i + 1, 5, res, "red")
                return res
            self.handle_excel.write_cell_result(i + 1, 6, execute_time)
        return res

    @logger("执行用例入口")
    def run_testcase(self):
        """执行测试用例"""
        self.handle_excel = HandleExcel(file_path=self.path.get())
        try:
            case_sheets = self.get_all_testcases_sheetname()
            for i in range(len(case_sheets)):
                caseStepList = self.add_testcase_step_by_sheetname(
                    case_sheets[i].sheet_name)
                start = time.time()
                result = self.excute_testcases(caseStepList)
                end = time.time()
                self.handle_excel.set_sheet_index_or_name("测试用例")
                execute_time = "%.2fs" % (end - start)
                if result == "pass":
                    self.handle_excel.write_cell_result(
                        i + 1, 5, result, "green")
                else:
                    self.handle_excel.write_cell_result(
                        i + 1, 5, result, "red")
                self.handle_excel.write_cell_result(
                    i + 1, 6, execute_time)

        except:
            raise

    # 打开文件并显示路径
    def _selectPath(self):
        # 选择文件path_接收文件地址
        self.path_ = tkinter.filedialog.askopenfilename()
        # 通过replace函数替换绝对文件地址中的/来使文件可被程序读取
        # 注意:\\转义后为\,所以\\\\转义后为\\
        self.path_ = self.path_.replace("/", "\\")
        # path设置path_的值
        self.path.set(self.path_)
 def __init__(self):
     self.handle_excel = HandleExcel(file_path=test_xlsx +
                                     "/关键字驱动测试用例1.xlsx")
class TestCase(object):
    """执行关键字测试用例程序入口"""
    def __init__(self):
        self.handle_excel = HandleExcel(file_path=test_xlsx +
                                        "/关键字驱动测试用例1.xlsx")

    @logger("main")
    def run_main(self):
        """运行主程序读取excel数据"""
        sheets = self.handle_excel.get_all_sheets
        for j in range(len(sheets)):
            self.handle_excel.set_sheet_index_or_name(j)
            case_lines = self.handle_excel.get_max_rows
            for i in range(1, case_lines):
                is_true = self.handle_excel.get_cell(i, 2)
                if eval(is_true):
                    key_words = self.handle_excel.get_cell(i, 3)
                    locator = self.handle_excel.get_cell(i, 4)
                    content = self.handle_excel.get_cell(i, 5)
                    start = time.time()
                    try:
                        res = run_keywords_method(key_words=key_words,
                                                  locator=locator,
                                                  content=content)
                        execute_time = "{:.2f}s".format(time.time() - start)
                        self.handle_excel.write_cell_result(i, 6, res)
                    except:
                        execute_time = "{:.2f}s".format(time.time() - start)
                        self.handle_excel.write_cell_result(i, 6, res, "red")
                    finally:
                        self.handle_excel.write_cell_result(
                            i, 7, execute_time, "white")
Esempio n. 7
0
 def __init__(self):
     self.handle_excel = HandleExcel(file_path=test_xlsx + "/YD测试用例.xls")