Esempio n. 1
0
class TestNewAddClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveBrowser()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(indexpage.pageurl)  # 打开网址
        # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = DetailsPage()
        # cls.testpageurl =cls.testpage.pageurl   #测试页面url
        # cls.activeweb.getUrl(cls.testpageurl)
        # cls.activeweb.delayTime(3)
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activebrowser = ActiveBrowser()  # 实例化
        # lpf.login(self.activebrowser)
        lpf.loginwithcookiesauto(self.activebrowser)
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activebrowser.closeBrowse()
        pass

    def definedepend(self, dependid):
        clickandbackdepend.clickandbackdepend(self.activebrowser, dependid)

    #定义新增函数
    def definenewadd(self, num, depend_click_case_id, is_cancel, addnew_id,
                     confirm_ele_find, confirm_ele_find_value, cancel_ele_find,
                     cancel_ele_find_value, is_submit_success, is_signel_page,
                     page_number_xpath, result_table_ele_find,
                     result_table_ele_find_value, table_colnum_counts):

        #如果有依赖ID,则执行依赖函数,达到执行当前用例的前提条件
        if depend_click_case_id != None:
            print("depend_click_case_id:%s" % depend_click_case_id)
            self.definedepend(depend_click_case_id)
            self.activebrowser.outPutMyLog("依赖函数执行完毕!!!")

        self.activebrowser.outPutMyLog("开始正式执行测试用例")

        #文本输入框添加内容
        inputtext_list = inputtapinputtext.inputtapinputtext(
            self.activebrowser, addnew_id)

        #文件输入框添加内容
        inputtapinputfile.inputtapinputfile(self.activebrowser, addnew_id)

        #选项框添加内容
        selecttapselectoption.selecttapselectoption(self.activebrowser,
                                                    addnew_id)

        #单选项与复选项添加内容
        radioandreelectionlabel.radioandreelectionlabel(
            self.activebrowser, addnew_id)

        #日期添加内容
        inputtapinputdatetime.inputtapinputdatetime(self.activebrowser,
                                                    addnew_id)

        #判断是否点击取消按钮
        if is_cancel:
            #如果点击取消按钮,则点击取消按钮
            self.activebrowser.findEleAndClick(num, cancel_ele_find,
                                               cancel_ele_find_value)
            self.activebrowser.outPutMyLog("点击【取消】按钮")

            if is_signel_page:
                self.activebrowser.outPutMyLog("页面不需要分页")
            else:
                son_ele_s = self.activebrowser.getFatherSonElesList(
                    "xpath", page_number_xpath, "tag_name", "li")
                son_count = len(son_ele_s)
                son_last_xpath = "%s/%s[%s]" % (page_number_xpath, "li",
                                                son_count)
                self.activebrowser.findEleAndClick(num, "xpath",
                                                   son_last_xpath)

            inputtext_list_len = len(inputtext_list)
            for i in range(0, inputtext_list_len):
                reault_check = self.activebrowser. \
                    findEleAndCheckTableWithColnumCounts(num, result_table_ele_find,
                                                         result_table_ele_find_value, inputtext_list[i],
                                                         table_colnum_counts)
                self.assertFalse(reault_check)

            asserttest_list_all = asserttiptext.assertiptext(
                self.activebrowser, addnew_id)
            asserttest_list_all_long = len(asserttest_list_all)
            if asserttest_list_all_long == 0 and inputtext_list_len == 0:
                self.activebrowser.outPutErrorMyLog("【异常提示】:本用例为验证点击取消按钮的用例,"
                                                    "但没有添加要输入的测试数据或者验证文本信息,"
                                                    "请检查用例测试数据,将测试数据补充完整!")
                self.assertTrue(False)

        else:
            #否则点击确定按钮
            self.activebrowser.findEleAndClick(num, confirm_ele_find,
                                               confirm_ele_find_value)
            self.activebrowser.outPutMyLog("点击【确定】按钮")

            if not is_submit_success:  #如果不是添加成功,需要验证某些文本信息
                self.activebrowser.outPutMyLog("提交不成功时的提示信息验证")
                asserttest_list_all = asserttiptext.assertiptext(
                    self.activebrowser, addnew_id)
                asserttest_list_all_long = len(asserttest_list_all)
                if asserttest_list_all_long != 0:
                    for i in range(0, asserttest_list_all_long):
                        self.assertEqual(asserttest_list_all[i][0],
                                         asserttest_list_all[i][1])
                else:
                    self.activebrowser.outPutErrorMyLog("【异常提示】:本用例为验证提示信息用例,"
                                                        "但是却没有添加相应的提示信息测试数据"
                                                        "请检查用例测试数据,将测试数据补充完整!")
                    self.assertTrue(False)
            else:
                self.activebrowser.outPutMyLog("添加成功后的添加数据的验证")
                if is_signel_page:
                    self.activebrowser.outPutMyLog("页面不需要分页")
                else:
                    son_ele_s = self.activebrowser.getFatherSonElesList(
                        "xpath", page_number_xpath, "tag_name", "li")
                    son_count = len(son_ele_s)
                    son_last_xpath = "%s/%s[%s]" % (page_number_xpath, "li",
                                                    son_count)
                    self.activebrowser.findEleAndClick(num, "xpath",
                                                       son_last_xpath)

                inputtext_list_len = len(inputtext_list)
                if inputtext_list_len != 0:
                    for i in range(0, inputtext_list_len):
                        reault_check = self.activebrowser.\
                            findEleAndCheckTableWithColnumCounts(num,result_table_ele_find,
                                                                 result_table_ele_find_value,inputtext_list[i],
                                                                 table_colnum_counts)
                        self.assertTrue(reault_check)
                else:
                    self.activebrowser.outPutErrorMyLog(
                        "【异常提示】:本用例为验证添加成功后,"
                        "是否存在添加的数据,但实际没有添加要输入的测试数据"
                        "请检查用例测试数据,将测试数据补充完整!")
                    self.assertTrue(False)

    # def test001(self):
    #     print("第一条测试用例")
    #     self.definedepend(self.dependid)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, depend_click_case_id, is_cancel, addnew_id,
                    confirm_ele_find, confirm_ele_find_value, cancel_ele_find,
                    cancel_ele_find_value, is_submit_success, is_signel_page,
                    page_number_xpath, result_table_ele_find,
                    result_table_ele_find_value, table_colnum_counts):
        def func(self):
            self.definenewadd(num, depend_click_case_id, is_cancel, addnew_id,
                              confirm_ele_find, confirm_ele_find_value,
                              cancel_ele_find, cancel_ele_find_value,
                              is_submit_success, is_signel_page,
                              page_number_xpath, result_table_ele_find,
                              result_table_ele_find_value, table_colnum_counts)

        return func
Esempio n. 2
0
class TestSearchClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveBrowser()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(indexpage.pageurl)  # 打开网址
        # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = DetailsPage()
        # cls.testpageurl =cls.testpage.pageurl   #测试页面url
        # cls.activeweb.getUrl(cls.testpageurl)
        # cls.activeweb.delayTime(3)
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activebrowser = ActiveBrowser()  # 实例化
        # lpf.login(self.activebrowser)
        lpf.loginwithcookiesauto(self.activebrowser)
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activebrowser.closeBrowse()
        pass

    def definedepend(self, dependid):
        clickandbackdepend.clickandbackdepend(self.activebrowser, dependid)

    #定义查询函数
    def definenewadd(self, num, depend_click_case_id, search_id,
                     serach_ele_find, search_ele_find_value, is_with_date,
                     result_table_ele_find, result_table_ele_find_value):

        #如果有依赖ID,则执行依赖函数,达到执行当前用例的前提条件
        if depend_click_case_id != None:
            print("depend_click_case_id:%s" % depend_click_case_id)
            self.definedepend(depend_click_case_id)
            self.activebrowser.outPutMyLog("依赖函数执行完毕!!!")

        self.activebrowser.outPutMyLog("开始正式执行测试用例")

        #文本输入框搜素内容
        inputtext_list = searchinputtapinputtext.searchinputtapinputtext(
            self.activebrowser, search_id)
        inputtext_list_len = len(inputtext_list)

        #选项框添加内容
        selectoptiontext_list = searchselecttapselectoption.searchselecttapselectoption(
            self.activebrowser, search_id)
        selectoptiontext_list_long = len(selectoptiontext_list)

        # #日期添加内容
        # inputtapinputdatetime.inputtapinputdatetime(self.activebrowser,addnew_id)

        #点击查询按钮
        self.activebrowser.findEleAndClick(num, serach_ele_find,
                                           search_ele_find_value)

        if is_with_date:  #如果预期是查询到数据,则对数据进行验证

            #验证输入框文本信息
            inputtext_list_len = len(inputtext_list)
            for i in range(0, inputtext_list_len):
                colmun_list = inputtext_list[i][1].split(",")
                self.activebrowser.outPutMyLog("colmun_list:%s" % colmun_list)
                colmun_list_long = len(colmun_list)
                result_check_list = []
                for j in range(0, colmun_list_long):
                    result_check_j = self.activebrowser.findEleAndCheckTableOneColnum(
                        num, result_table_ele_find,
                        result_table_ele_find_value, inputtext_list[i][0],
                        int(colmun_list[j]) - 1)
                    result_check_list.append(result_check_j)
                self.activebrowser.outPutMyLog("result_check_list:%s" %
                                               result_check_list)
                self.assertIn(True, result_check_list)
                # self.assertTrue(result_check)

            #验证选项框文本信息
            selectoptiontext_list_long = len(selectoptiontext_list)
            for i in range(0, selectoptiontext_list_long):
                result_check = self.activebrowser.findEleAndCheckTableOneColnum(
                    num, result_table_ele_find, result_table_ele_find_value,
                    selectoptiontext_list[i][0],
                    int(selectoptiontext_list[i][1]) - 1)
                self.assertTrue(result_check)

        else:  #否则断言“暂无数据”在页面中
            self.activebrowser.delayTime(10)
            self.assertIn("暂无数据", self.activebrowser.getPageSource())

        if inputtext_list_len == 0 and selectoptiontext_list_long == 0:
            self.activebrowser.getScreenshotAboutMySQL()
            self.activebrowser.outPutErrorMyLog("【异常提示】:本用例为查询测试用例,"
                                                "但没有添加要输入或选择的测试数据,"
                                                "请检查用例测试数据,将测试数据补充完整!")
            self.assertTrue(False)

    # def test001(self):
    #     print("第一条测试用例")
    #     self.definedepend(self.dependid)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, depend_click_case_id, search_id, serach_ele_find,
                    search_ele_find_value, is_with_date, result_table_ele_find,
                    result_table_ele_find_value):
        def func(self):
            self.definenewadd(num, depend_click_case_id, search_id,
                              serach_ele_find, search_ele_find_value,
                              is_with_date, result_table_ele_find,
                              result_table_ele_find_value)

        return func
Esempio n. 3
0
class TestClickAndBackClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveBrowser()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(indexpage.pageurl)  # 打开网址
        # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = DetailsPage()
        # cls.testpageurl =cls.testpage.pageurl   #测试页面url
        # cls.activeweb.getUrl(cls.testpageurl)
        # cls.activeweb.delayTime(3)
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activebrowser = ActiveBrowser()  # 实例化
        # lpf.login(self.activebrowser)
        lpf.loginwithcookiesauto(self.activebrowser)
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activebrowser.closeBrowse()
        pass

    def definedepend(self, dependid):
        clickandbackdepend.clickandbackdepend(self.activebrowser, dependid)

    #定义点击返回函数
    def defineclickandback(self, num, case_counts, depend_case_id,
                           current_page_click_ele_find,
                           current_page_click_ele_find_value, is_new,
                           next_page_check_ele_find,
                           next_page_check_ele_find_value):

        #如果有依赖ID,则执行依赖函数,达到执行当前用例的前提条件
        if depend_case_id != None:
            self.definedepend(depend_case_id)
            self.activebrowser.outPutMyLog("依赖函数执行完毕!!!")

        self.activebrowser.outPutMyLog("开始正式执行测试用例")
        #点击当前页面元素
        self.activebrowser.findEleAndClick(num, current_page_click_ele_find,
                                           current_page_click_ele_find_value)

        #验证出现预期元素
        #如果出现新窗口,切换到新窗口
        if is_new:
            self.activebrowser.switchNewWindows()
        self.activebrowser.findEleImageNum(num, next_page_check_ele_find,
                                           next_page_check_ele_find_value)

    # def test001(self):
    #     print("第一条测试用例")
    #     self.definedepend(self.dependid)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, case_counts, depend_case_id,
                    current_page_click_ele_find,
                    current_page_click_ele_find_value, is_new,
                    next_page_check_ele_find, next_page_check_ele_find_value):
        def func(self):
            self.defineclickandback(num, case_counts, depend_case_id,
                                    current_page_click_ele_find,
                                    current_page_click_ele_find_value, is_new,
                                    next_page_check_ele_find,
                                    next_page_check_ele_find_value)

        return func
Esempio n. 4
0
class TestClickAndBackClass(unittest.TestCase):  # 创建测试类

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveBrowser()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(indexpage.pageurl)  # 打开网址
        # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = DetailsPage()
        # cls.testpageurl =cls.testpage.pageurl   #测试页面url
        # cls.activeweb.getUrl(cls.testpageurl)
        # cls.activeweb.delayTime(3)
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass




    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activebrowser = ActiveBrowser()  # 实例化
        # lpf.login(self.activebrowser)
        lpf.loginwithcookiesauto(self.activebrowser)
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activebrowser.closeBrowse()
        pass


    def definedepend(self,dependid):
        clickandbackdepend.clickandbackdepend(self.activebrowser,dependid)


    #定义点击返回函数
    def defineclickandback(self,num,case_counts,depend_case_id,
                           current_page_click_ele_find, current_page_click_ele_find_value,
                           is_new,
                           next_page_check_ele_find,next_page_check_ele_find_value,
                           testproject, testmodule, testpage,
                           testcasetitle, teststarttime,
                           forcount
                           ):


        #如果有依赖ID,则执行依赖函数,达到执行当前用例的前提条件
        if depend_case_id != None:
            self.definedepend(depend_case_id)
            self.activebrowser.outPutMyLog("依赖函数执行完毕!!!")

        self.activebrowser.outPutMyLog("开始正式执行测试用例")
        #点击当前页面元素
        self.activebrowser.findEleAndClickNoDelayTime(num, current_page_click_ele_find, current_page_click_ele_find_value)


        domready = """          // domready时间
                    let mytiming = window.performance.timing;
                    return mytiming.domContentLoadedEventEnd   - mytiming.fetchStart ;
        """
        loadEventTime = """
                   let mytiming = window.performance.timing;
                   return mytiming.loadEventEnd - mytiming.navigationStart ;
                   """

        page_time_NoCatch = int(self.activebrowser.driver.execute_script(loadEventTime))
        dom_time_NoCatch = int(self.activebrowser.driver.execute_script(domready))

        print("无缓存页面加载时间:%s" % page_time_NoCatch)
        print("无缓存DOM加载时间:%s" % dom_time_NoCatch)

        #保存时间到库
        from reportdatas.models import PageLoadTimeReport
        pageloadtimereport = PageLoadTimeReport()
        pageloadtimereport.testproject = testproject
        pageloadtimereport.testmodule = testmodule
        pageloadtimereport.testpage = testpage
        pageloadtimereport.testcasetitle = testcasetitle
        pageloadtimereport.teststarttime = teststarttime
        pageloadtimereport.forcount = forcount
        pageloadtimereport.page_load_time_no_catch = page_time_NoCatch
        pageloadtimereport.dom_load_time_no_catch = dom_time_NoCatch
        pageloadtimereport.save()

        if page_time_NoCatch >= 1000 and page_time_NoCatch < 2000:
            #保存到统计1秒到2秒的库中
            from reportpageloadtime.models import PageLoadTimeReportOneSecond
            pageloadtimereportonesecond = PageLoadTimeReportOneSecond()
            pageloadtimereportonesecond.testproject = testproject
            pageloadtimereportonesecond.testmodule = testmodule
            pageloadtimereportonesecond.testpage = testpage
            pageloadtimereportonesecond.testcasetitle = testcasetitle
            pageloadtimereportonesecond.teststarttime = teststarttime
            pageloadtimereportonesecond.forcount = forcount
            pageloadtimereportonesecond.page_load_time_no_catch = page_time_NoCatch
            pageloadtimereportonesecond.dom_load_time_no_catch = dom_time_NoCatch
            pageloadtimereportonesecond.save()

        elif page_time_NoCatch >= 2000 and page_time_NoCatch < 3000:
            #保存到统计2秒到3秒的库中
            from reportpageloadtime.models import PageLoadTimeReportTwoSecond
            pageloadtimereporttwosecond = PageLoadTimeReportTwoSecond()
            pageloadtimereporttwosecond.testproject = testproject
            pageloadtimereporttwosecond.testmodule = testmodule
            pageloadtimereporttwosecond.testpage = testpage
            pageloadtimereporttwosecond.testcasetitle = testcasetitle
            pageloadtimereporttwosecond.teststarttime = teststarttime
            pageloadtimereporttwosecond.forcount = forcount
            pageloadtimereporttwosecond.page_load_time_no_catch = page_time_NoCatch
            pageloadtimereporttwosecond.dom_load_time_no_catch = dom_time_NoCatch
            pageloadtimereporttwosecond.save()

        elif page_time_NoCatch >= 3000 and page_time_NoCatch < 4000:
            # 保存到统计3秒到4秒的库中
            from reportpageloadtime.models import PageLoadTimeReportThereSecond
            pageloadtimereporttheresecond = PageLoadTimeReportThereSecond()
            pageloadtimereporttheresecond.testproject = testproject
            pageloadtimereporttheresecond.testmodule = testmodule
            pageloadtimereporttheresecond.testpage = testpage
            pageloadtimereporttheresecond.testcasetitle = testcasetitle
            pageloadtimereporttheresecond.teststarttime = teststarttime
            pageloadtimereporttheresecond.forcount = forcount
            pageloadtimereporttheresecond.page_load_time_no_catch = page_time_NoCatch
            pageloadtimereporttheresecond.dom_load_time_no_catch = dom_time_NoCatch
            pageloadtimereporttheresecond.save()

        elif page_time_NoCatch >= 4000 and page_time_NoCatch < 5000:
            #保存到统计4秒到5秒的库中
            from reportpageloadtime.models import PageLoadTimeReportFourSecond
            pageloadtimereportfoursecond = PageLoadTimeReportFourSecond()
            pageloadtimereportfoursecond.testproject = testproject
            pageloadtimereportfoursecond.testmodule = testmodule
            pageloadtimereportfoursecond.testpage = testpage
            pageloadtimereportfoursecond.testcasetitle = testcasetitle
            pageloadtimereportfoursecond.teststarttime = teststarttime
            pageloadtimereportfoursecond.forcount = forcount
            pageloadtimereportfoursecond.page_load_time_no_catch = page_time_NoCatch
            pageloadtimereportfoursecond.dom_load_time_no_catch = dom_time_NoCatch
            pageloadtimereportfoursecond.save()

        elif page_time_NoCatch >= 5000 :
            #保存到统计5秒及其以上的库中
            from reportpageloadtime.models import PageLoadTimeReportFiveSecond
            pageloadtimereportfivesecond = PageLoadTimeReportFiveSecond()
            pageloadtimereportfivesecond.testproject = testproject
            pageloadtimereportfivesecond.testmodule = testmodule
            pageloadtimereportfivesecond.testpage = testpage
            pageloadtimereportfivesecond.testcasetitle = testcasetitle
            pageloadtimereportfivesecond.teststarttime = teststarttime
            pageloadtimereportfivesecond.forcount = forcount
            pageloadtimereportfivesecond.page_load_time_no_catch = page_time_NoCatch
            pageloadtimereportfivesecond.dom_load_time_no_catch = dom_time_NoCatch
            pageloadtimereportfivesecond.save()






    # def test001(self):
    #     print("第一条测试用例")
    #     self.definedepend(self.dependid)

    @staticmethod    #根据不同的参数生成测试用例
    def getTestFunc(num,case_counts,depend_case_id,
                           current_page_click_ele_find, current_page_click_ele_find_value,
                           is_new,
                           next_page_check_ele_find,next_page_check_ele_find_value,
                           testproject, testmodule, testpage,
                           testcasetitle, teststarttime,
                           forcount):

        def func(self):
            self.defineclickandback(num,case_counts,depend_case_id,
                           current_page_click_ele_find, current_page_click_ele_find_value,
                           is_new,
                           next_page_check_ele_find,next_page_check_ele_find_value,
                           testproject, testmodule, testpage,
                           testcasetitle, teststarttime,
                           forcount)
        return func
Esempio n. 5
0
class TestLoginClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveBrowser()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(indexpage.pageurl)  # 打开网址
        # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = DetailsPage()
        # cls.testpageurl =cls.testpage.pageurl   #测试页面url
        # cls.activeweb.getUrl(cls.testpageurl)
        # cls.activeweb.delayTime(3)
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activebrowser = ActiveBrowser()  # 实例化
        self.activebrowser.getUrl(gc.TEST_WEB_YUMING)
        # lpf.login(self.activebrowser)
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activebrowser.closeBrowse()
        pass

    def definedepend(self, dependid):
        clickandbackdepend.clickandbackdepend(self.activebrowser, dependid)

    #定义新增函数
    def definelogin(self, num, login_id, confirm_ele_find,
                    confirm_ele_find_value, click_confirm_delay_time):

        self.activebrowser.outPutMyLog("开始正式执行测试用例")

        #文本输入框添加内容
        inputtext_list = inputtapinputtext.inputtapinputtext(
            self.activebrowser, login_id)

        #点击登录按钮
        self.activebrowser.findEleAndClickConfigDelayTime(
            num, confirm_ele_find, confirm_ele_find_value,
            click_confirm_delay_time)
        self.activebrowser.getPageSource()
        print("已经点击确定按钮")
        self.activebrowser.delayTime(30000)

        #验证验证文本信息
        asserttest_list_all = asserttiptext.assertiptext(
            self.activebrowser, login_id)
        asserttest_list_all_long = len(asserttest_list_all)
        for i in range(0, asserttest_list_all_long):
            self.assertTrue(asserttest_list_all[i][0],
                            asserttest_list_all[i][1])

        if asserttest_list_all_long == 0:
            self.activebrowser.outPutErrorMyLog("【异常提示】:本用例为验证点击登录按钮后的提示信息,"
                                                "但没有添加要验证的提示信息,"
                                                "请检查用例测试数据,将测试数据补充完整!")
            self.assertTrue(False)

    # def test001(self):
    #     print("第一条测试用例")
    #     self.definedepend(self.dependid)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, login_id, confirm_ele_find, confirm_ele_find_value,
                    click_confirm_delay_time):
        def func(self):
            self.definelogin(num, login_id, confirm_ele_find,
                             confirm_ele_find_value, click_confirm_delay_time)

        return func
Esempio n. 6
0
class TestClickAndBackClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveBrowser()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(indexpage.pageurl)  # 打开网址
        # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = DetailsPage()
        # cls.testpageurl =cls.testpage.pageurl   #测试页面url
        # cls.activeweb.getUrl(cls.testpageurl)
        # cls.activeweb.delayTime(3)
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activebrowser = ActiveBrowser()  # 实例化
        self.activebrowser.getUrl(indexpage.pageurl)
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activebrowser.closeBrowse()
        pass

    def definedepend(self, dependid):
        clickandbackdepend.clickandbackdepend(self.activebrowser, dependid)
        # self.activebrowser.outPutMyLog("依赖ID(dependid)为:%s" % dependid)
        # if dependid != None:
        #     self.activebrowser.outPutMyLog("执行依赖")
        #     from testdatas.models import ClickAndBack
        #     clickandbacktestcases = ClickAndBack.objects.filter(id=int(dependid))
        #     print("clickandbacktestcases:%s" % clickandbacktestcases)
        #     if str(clickandbacktestcases) != "<QuerySet []>":
        #         self.activebrowser.outPutMyLog("找到依赖数据")
        #         for clickandbacktestcase in  clickandbacktestcases:
        #             depend = clickandbacktestcase.depend_case_id
        #             self.activebrowser.outPutMyLog("depend:%s" % depend)
        #             if depend != None:
        #                 self.activebrowser.outPutMyLog("进入下一层依赖")
        #                 self.definedepend(depend)
        #
        #             self.activebrowser.outPutMyLog("执行的caseid:%s" % clickandbacktestcase.id)
        #             self.activebrowser.findEleAndClick("%s_%s"%(clickandbacktestcase.id,
        #                                                         clickandbacktestcase.case_counts),
        #                                                clickandbacktestcase.current_page_click_ele_find,
        #                                                clickandbacktestcase.current_page_click_ele_find_value)
        #             is_new = clickandbacktestcase.is_new
        #             if is_new:
        #                 self.activebrowser.switchNewWindows()
        #
        #     else:
        #         self.activebrowser.outPutErrorMyLog("没有找到依赖id[%s]对应的数据!" % dependid)
        # else:
        #     self.activebrowser.outPutMyLog("依赖ID为None,不执行依赖!")

    #定义点击返回函数
    def defineclickandback(self, num, case_counts, depend_case_id,
                           current_page_click_ele_find,
                           current_page_click_ele_find_value, is_new,
                           next_page_check_ele_find,
                           next_page_check_ele_find_value):

        #如果弹出广告弹框,关闭弹框
        if avderpagefunction.isExist_x(self.activebrowser, avderpage.x_xpath):
            self.activebrowser.findElementByXpathAndClick(avderpage.x_xpath)

        #如果有依赖ID,则执行依赖函数,达到执行当前用例的前提条件
        if depend_case_id != None:
            self.definedepend(depend_case_id)
            self.activebrowser.outPutMyLog("依赖函数执行完毕!!!")

        self.activebrowser.outPutMyLog("开始正式执行测试用例")
        #点击当前页面元素
        self.activebrowser.findEleAndClick(num, current_page_click_ele_find,
                                           current_page_click_ele_find_value)

        #验证出现预期元素
        #如果出现新窗口,切换到新窗口
        if is_new:
            self.activebrowser.switchNewWindows()
        self.activebrowser.findEleImageNum(num, next_page_check_ele_find,
                                           next_page_check_ele_find_value)

    # def test001(self):
    #     print("第一条测试用例")
    #     self.definedepend(self.dependid)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, case_counts, depend_case_id,
                    current_page_click_ele_find,
                    current_page_click_ele_find_value, is_new,
                    next_page_check_ele_find, next_page_check_ele_find_value):
        def func(self):
            self.defineclickandback(num, case_counts, depend_case_id,
                                    current_page_click_ele_find,
                                    current_page_click_ele_find_value, is_new,
                                    next_page_check_ele_find,
                                    next_page_check_ele_find_value)

        return func
class TestClickAndBackClass(unittest.TestCase):  # 创建测试类
    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为setUpClass
    def setUpClass(cls):
        # cls.activeweb = ActiveBrowser()  # 实例化
        # cls.loginurl = LoginPage().pageurl
        # cls.activeweb.getUrl(indexpage.pageurl)  # 打开网址
        # cls.activeweb.findElementByXpathAndInput(LoginPage().account,AGENT_LOGIN_ACCOUNT)
        # cls.activeweb.findElementByXpathAndInput(LoginPage().password,AGENT_LOGIN_PASSWORD)
        # cls.activeweb.findElementByXpathAndClick(LoginPage().loginbutton)
        # cls.activeweb.delayTime(3)
        # cls.testpage = DetailsPage()
        # cls.testpageurl =cls.testpage.pageurl   #测试页面url
        # cls.activeweb.getUrl(cls.testpageurl)
        # cls.activeweb.delayTime(3)
        pass

    @classmethod  # 类方法,只执行一次,但必须要加注解@classmethod,且名字固定为tearDownClass
    def tearDownClass(cls):
        # cls.activeweb.closeBrowse()
        pass

    def setUp(self):  # 每条用例执行测试之前都要执行此方法
        self.activebrowser = ActiveBrowser()  # 实例化
        # lpf.login(self.activebrowser)
        lpf.loginwithcookiesauto(self.activebrowser)
        pass

    def tearDown(self):  # 每条用例执行测试之后都要执行此方法
        self.activebrowser.closeBrowse()
        pass

    def definedepend(self, dependid):
        clickandbackdepend.clickandbackdepend(self.activebrowser, dependid)

    #定义点击返回函数
    def defineclickandback(self, num, case_counts, depend_case_id,
                           current_page_click_ele_find,
                           current_page_click_ele_find_value, is_new,
                           next_page_check_ele_find,
                           next_page_check_ele_find_value, testproject,
                           testmodule, testpage, testcasetitle, teststarttime,
                           forcount):

        #如果有依赖ID,则执行依赖函数,达到执行当前用例的前提条件
        if depend_case_id != None:
            self.definedepend(depend_case_id)
            self.activebrowser.outPutMyLog("依赖函数执行完毕!!!")

        self.activebrowser.outPutMyLog("开始正式执行测试用例")
        #点击当前页面元素
        self.activebrowser.findEleAndClickNoDelayTime(
            num, current_page_click_ele_find,
            current_page_click_ele_find_value)
        self.activebrowser.delayTime(3)
        self.activebrowser.driver.refresh()

        navigationStart_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.navigationStart;
        """
        print(
            "navigationStart_Time:%s" %
            self.activebrowser.driver.execute_script(navigationStart_Time_js))

        fetchStart_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.fetchStart;
        """
        print("fetchStart_Time_js:%s" %
              self.activebrowser.driver.execute_script(fetchStart_Time_js))

        domainLookupStart_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.domainLookupStart;
        """
        print(
            "domainLookupStart_Time_js:%s" %
            self.activebrowser.driver.execute_script(domainLookupStart_Time_js)
        )

        domainLookupEnd_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.domainLookupEnd;
        """
        print(
            "domainLookupEnd_Time_js:%s" %
            self.activebrowser.driver.execute_script(domainLookupEnd_Time_js))

        connectStart_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.connectStart;
        """
        print("connectStart_Time_js:%s" %
              self.activebrowser.driver.execute_script(connectStart_Time_js))

        connectEnd_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.connectEnd;
        """
        print("connectEnd_Time_js:%s" %
              self.activebrowser.driver.execute_script(connectEnd_Time_js))

        requestStart_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.requestStart;
        """
        print("requestStart_Time_js:%s" %
              self.activebrowser.driver.execute_script(requestStart_Time_js))

        responseEnd_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.responseEnd;
        """
        print("responseEnd_Time_js:%s" %
              self.activebrowser.driver.execute_script(responseEnd_Time_js))

        domLoading_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.domLoading;
        """
        print("domLoading_Time_js:%s" %
              self.activebrowser.driver.execute_script(domLoading_Time_js))

        domInteractive_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.domInteractive;
        """
        print("domInteractive_Time_js:%s" %
              self.activebrowser.driver.execute_script(domInteractive_Time_js))

        domContentLoadedEventStart_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.domContentLoadedEventStart;
        """
        print("domContentLoadedEventStart_Time_js:%s" %
              self.activebrowser.driver.execute_script(
                  domContentLoadedEventStart_Time_js))

        domContentLoadedEventEnd_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.domContentLoadedEventEnd;
        """
        print("domContentLoadedEventEnd_Time_js:%s" %
              self.activebrowser.driver.execute_script(
                  domContentLoadedEventEnd_Time_js))

        domComplete_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.domComplete;
        """
        print("domComplete_Time_js:%s" %
              self.activebrowser.driver.execute_script(domComplete_Time_js))

        loadEventStart_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.loadEventStart;
        """
        print("loadEventStart_Time_js:%s" %
              self.activebrowser.driver.execute_script(loadEventStart_Time_js))

        loadEventEnd_Time_js = """
        let mytiming = window.performance.timing;
        return mytiming.loadEventEnd;
        """
        print("loadEventEnd_Time_js_Time_js:%s" %
              self.activebrowser.driver.execute_script(loadEventEnd_Time_js))

        print(
            type(self.activebrowser.driver.execute_script(
                loadEventEnd_Time_js)))
        print(
            type(
                int(
                    self.activebrowser.driver.execute_script(
                        loadEventEnd_Time_js))))

        print("DNS查询耗时:%s" % str(
            self.activebrowser.driver.execute_script(domainLookupEnd_Time_js) -
            self.activebrowser.driver.execute_script(domainLookupStart_Time_js)
        ))
        print("TCP链接耗时:%s" % str(
            self.activebrowser.driver.execute_script(connectEnd_Time_js) -
            self.activebrowser.driver.execute_script(connectStart_Time_js)))
        print("request请求耗时:%s" % str(
            self.activebrowser.driver.execute_script(responseEnd_Time_js) -
            self.activebrowser.driver.execute_script(requestStart_Time_js)))
        print("解析dom树耗时:%s" % str(
            self.activebrowser.driver.execute_script(domComplete_Time_js) -
            self.activebrowser.driver.execute_script(domInteractive_Time_js)))
        print("白屏时间:%s" % str(
            self.activebrowser.driver.execute_script(domLoading_Time_js) -
            self.activebrowser.driver.execute_script(fetchStart_Time_js)))
        print("domready时间:%s" % str(
            self.activebrowser.driver.execute_script(
                domContentLoadedEventEnd_Time_js) -
            self.activebrowser.driver.execute_script(fetchStart_Time_js)))
        print("onload时间:%s" % str(
            self.activebrowser.driver.execute_script(loadEventEnd_Time_js) -
            self.activebrowser.driver.execute_script(fetchStart_Time_js)))
        print("onload时间:%s" % str(
            self.activebrowser.driver.execute_script(loadEventEnd_Time_js) -
            self.activebrowser.driver.execute_script(navigationStart_Time_js)))

        #统计页面加载时间
        img = """           // 首屏图片加载完成
                            let mytiming = window.performance.timing;
                            return window.lastImgLoadTime - mytiming.navigationStart ;
                """
        # intfaces = """   //https://blog.csdn.net/weixin_42284354/article/details/80416157
        # // 接口完成加载完成
        #                     let mytiming = window.performance.timing;
        #                     return Report.SPEED.LASTCGI - mytiming.navigationStart ;
        #         """
        DNS = """          // DNS查询耗时
                    let mytiming = window.performance.timing;
                    return mytiming.domainLookupEnd - mytiming.domainLookupStart ;
        """
        # TCP = """          // TCP链接耗时
        #             let mytiming = window.performance.timing;
        #             return mytiming.connectEnd - mytiming.connectStart ;
        # """
        request = """          // request请求耗时
                    let mytiming = window.performance.timing;
                    return mytiming.responseEnd  - mytiming.responseStart ;
        """
        dom = """          //  解析dom树耗时
                    let mytiming = window.performance.timing;
                    return mytiming.domComplete - mytiming.domInteractive ;
        """
        # Ari = """          // 白屏时间
        #             let mytiming = window.performance.timing;
        #             return mytiming.responseStart - mytiming.navigationStart ;
        # """

        domready = """          // domready时间
                    let mytiming = window.performance.timing;
                    return mytiming.domContentLoadedEventEnd   - mytiming.fetchStart ;
        """
        loadEventTime = """
                   let mytiming = window.performance.timing;
                   return mytiming.loadEventEnd - mytiming.navigationStart ;
                   """

        #首屏图片加载完成时间
        first_image_load_time = """
        let mytiming = window.performance.timing;
        return window.lastImgLoadTime 
        //return window.lastImgLoadTime - mytiming.navigationStart;
        """

        # HTML加载完成时间
        html_load_time = """
        let mytiming = window.performance.timing;
        //return mytiming.navigationStart;
        return window.loadHtmlTime
        //return window.loadHtmlTime - mytiming.navigationStart;
        """

        # self.activebrowser.driver.execute_script(img)
        # self.activebrowser.driver.execute_script(intfaces)
        # self.activebrowser.driver.execute_script(DNS)
        # self.activebrowser.driver.execute_script(TCP)
        # self.activebrowser.driver.execute_script(request)
        # self.activebrowser.driver.execute_script(dom)
        # self.activebrowser.driver.execute_script(Ari)
        DNS_time = self.activebrowser.driver.execute_script(DNS)
        request_time = self.activebrowser.driver.execute_script(request)
        first_image_load = self.activebrowser.driver.execute_script(
            first_image_load_time)
        html_load = self.activebrowser.driver.execute_script(html_load_time)

        page_time_NoCatch = int(
            self.activebrowser.driver.execute_script(loadEventTime))
        dom_time_NoCatch = int(
            self.activebrowser.driver.execute_script(domready))

        print("首屏图片加载完成时间:%s" % first_image_load)
        print("HTML加载完成时间:%s" % html_load)
        print("请求时间:%s" % request_time)
        print("DNS时间:%s" % DNS_time)
        print("无缓存页面加载时间:%s" % page_time_NoCatch)
        print("无缓存DOM加载时间:%s" % dom_time_NoCatch)

        #保存时间到库
        from reportdatas.models import PageLoadTimeReport
        pageloadtimereport = PageLoadTimeReport()
        pageloadtimereport.testproject = testproject
        pageloadtimereport.testmodule = testmodule
        pageloadtimereport.testpage = testpage
        pageloadtimereport.testcasetitle = testcasetitle
        pageloadtimereport.teststarttime = teststarttime
        pageloadtimereport.forcount = forcount
        pageloadtimereport.page_load_time_no_catch = page_time_NoCatch
        pageloadtimereport.dom_load_time_no_catch = dom_time_NoCatch
        pageloadtimereport.save()

        self.activebrowser.delayTime(3)

    # def test001(self):
    #     print("第一条测试用例")
    #     self.definedepend(self.dependid)

    @staticmethod  #根据不同的参数生成测试用例
    def getTestFunc(num, case_counts, depend_case_id,
                    current_page_click_ele_find,
                    current_page_click_ele_find_value, is_new,
                    next_page_check_ele_find, next_page_check_ele_find_value,
                    testproject, testmodule, testpage, testcasetitle,
                    teststarttime, forcount):
        def func(self):
            self.defineclickandback(num, case_counts, depend_case_id,
                                    current_page_click_ele_find,
                                    current_page_click_ele_find_value, is_new,
                                    next_page_check_ele_find,
                                    next_page_check_ele_find_value,
                                    testproject, testmodule, testpage,
                                    testcasetitle, teststarttime, forcount)

        return func