Ejemplo n.º 1
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
Ejemplo n.º 2
0
 def setUp(self):  # 每条用例执行测试之前都要执行此方法
     self.activebrowser = ActiveBrowser()  # 实例化
     # lpf.login(self.activebrowser)
     lpf.loginwithcookiesauto(self.activebrowser)
     pass
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