Пример #1
0
class PageCheck:
    def __init__(self,division= None,classname = None):
        # 若传参:属性标签以及数据排序方式
        if division and classname:
            self.division = division
            self.classname = classname
        #不传参,默认表格数据,div,x-scroll
        else:
            self.division = "div"
            self.classname = "x-scroll"
        self.data = Getdata()
        self.cookies = Get_cookies.Get_cookies(2)
        self.cookies= self.cookies.get_cookies_admin()
    # 在界面中获取到所有指定属性的数据
    def get_allparam(self,html,actualvalue):
        soup = BeautifulSoup(html, "html.parser")
        a = []
        # 结合业务,界面数据均是在列表中
        # 若是按照创建时间倒序排序,则获取当前第二列数据
        try:
            for tag in soup.find_all('div', class_='x-scroll'):
                # print("*****", tag)
                data = tag.find_all('tr')
                # data = data.next_sibling
                # print("======",data,type(data))
                # 初始化返回至
                flag = True
                flag_b = True
                for i in actualvalue:
                    if i in str(data):
                        flag_b = True
                    else:
                        flag_b = False
                    flag = flag_b and flag
                return flag
        except Exception as e:
            print("找不到界面预期结果",e)
    # 获取页面html信息
    def getHtml(self,url,actualvalue):
        # 获取登录cookies
        page = requests.get(url, cookies=self.cookies,verify = False)
        # 页面转换为html格式输出
        html = page.text
        # 返回比较结果
        return self.get_allparam(html,actualvalue)
    def case_param(self,i,url):
        #testcase表格界面期望数据整理
        #获取表格数据
        actualvalue =self.data.get_web_expectvalu(i)
        #分号分隔字符串放置在辅助数组
        arr = []
        for k in range(len(actualvalue.split(";"))):
            arr.append(actualvalue.split(";")[k])
        return self.getHtml(url,arr)
# a = PageCheck()
# print(a.case_param(3,"http://testing.iqidao.com/admin001/activity/users?activityId=740"))
Пример #2
0
class Run_case():
    # class执行前执行,且一个class只执行一次
    # @classmethod
    # def setupClass(cls):
    #     print('class执行前执行')
    # # 每个方法执行前执行一次
    # def setUp(self):
    #     print('test前执行')
    def __init__(self, excelpath=None, jsonpath=None):
        self.tablename = Case_Table().get_tablename()
        if excelpath:
            self.excelpath = excelpath
        else:
            self.excelpath = "../Test_Case/" + self.tablename + ".xls"
        if jsonpath:
            self.jsonpath = jsonpath
        else:
            self.jsonpath = "../data/" + self.tablename + ".json"
        self.run_method = inter()
        self.data = Getdata(self.excelpath, self.jsonpath)
        self.result = isequal()
        self.sendmail = sendmail()
        self.page_check = PageCheck()
        self.de_data = dependata(self.excelpath, self.jsonpath)
        self.caserun = Case(excelpath=self.excelpath, jsonpath=self.jsonpath)
        self.opexcel = oper_excel(filename=excelpath)
        self.DBCASE = Get_case()

    # 学生登陆cookies
    def student_cookies(self):
        cookies = Get_cookies(2)
        return cookies.getcookies_web()

    #admin登陆cookies
    def admin_cookies(self):
        cookies = Get_cookies(1)
        return cookies.get_cookies_admin()

    # 教师登陆cookies
    def teacher_cookies(self):
        cookies = Get_cookies(3)
        return cookies.getcookies_web()

    def go_run(self):
        # pass_count = []
        # fail_count = []
        res = None
        # 数据库中获取案例,写至表格中
        self.DBCASE.create_excel()
        # 获取需执行案例总数量
        rows_count = self.data.get_case_lines()
        # book = xlrd.open_workbook(filename=self.excelpath, formatting_info=True).sheet_by_index(0)
        # # 将上次的执行结果清除
        # for i in range(1, rows_count):
        #     self.opexcel.write_value(i, 13, "")
        #     self.opexcel.write_value(i, 16, "")
        # del book
        # print("清除原测试结果数据")
        # 排除表头,从-1开始
        for i in range(1, rows_count):
            caseid = self.data.get_case_id(i)
            url = self.data.get_url(i)
            functionname = self.data.get_functionname(i)
            web_admin = self.data.get_web_admin(i)
            method = self.data.get_method(i)
            isrun = self.data.get_is_run(i)
            data = self.data.get_data_json(i)
            file = self.data.get_files(i)
            return_value = self.data.get_return_value(i)
            # 若url为拼接方式
            if "+" in url:
                #     则获取到拼接参数
                url_data = self.de_data.depend_data(i)
                # print("表格里数据",url,url_data)
                url = url.split("+")[0] + str(url_data)
                # print("拼接后",url,type(url_data),type(str(url_data)))
            if file:
                files = {"logo1": ("aa.jpg", open(file, "rb"), "image/jpeg")}
            else:
                files = None
            # cookies = self.data.get_cookies(i)
            expect = self.data.get_expect(i)
            webexpect = self.data.get_web_expectvalu(i)
            depen_case = self.data.get_case_depen(i)
            depend_data = self.de_data.depend_data(i)
            # print("*****第",i,"个",data,depen_data,depen_filed)
            # 查看运行状态是否运行
            # 判断是否是后台案例
            if isrun and web_admin == 0:
                # 首先获取cookie,请求代入cookies
                cookies = self.admin_cookies()
                # 执行案例
                self.caserun.case_run(caseid, rows_count, depen_case,
                                      depend_data, url, method, data, cookies,
                                      expect, i, webexpect, functionname,
                                      files, return_value)
            # 判断是否是学生端案例
            elif isrun and web_admin == 1:
                cookies = self.student_cookies()
                self.caserun.case_run(caseid, rows_count, depen_case,
                                      depend_data, url, method, data, cookies,
                                      expect, i, webexpect, functionname,
                                      files, return_value)
            # 判断是否是教师端案例
            elif isrun and web_admin == 2:
                cookies = self.teacher_cookies()
                self.caserun.case_run(caseid, rows_count, depen_case,
                                      depend_data, url, method, data, cookies,
                                      expect, i, webexpect, functionname,
                                      files, return_value)