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"))
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)