def download_file(self, method, url, cookie=None, header=None, file_name=None): """ 下载文件 :param method: 请求方法 :param url: 请求地址 :param cookie: 请求cookies :param header: 请求头西悉尼 :param file_name: 下载文件名称 :return: """ if "http" not in url: url = self.base_url + '/' + url response = requests.request(method, url, cookies=cookie, headers=header, timeout=self.timeout, verify=self.verify) res = response.content if file_name is None: file_name = url.split('/')[-1] else: file_name = file_name base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) file_path = os.path.join(base_dir + '/download_file/' + file_name) logging.info("保存文件路径:{0}".format(file_path)) with open(file_path, 'wb') as f: f.write(res) Logger().close_logger()
def send_request(self, method, url, data=None, cookie=None, header=None, save_cookie=None): """ 请求接口主入口 :param method: 请求方法 :param url: 请求地址 :param data: 请求参数 :param cookie: 请求cookie :param save_cookie: 是否获取cookie :param header: 请求头信息 :return: """ if method in 'get' or method in 'GET': req = self.send_get(url=url, param=data, cookie=cookie, header=header, save_cookie=save_cookie) elif method in 'post' or method in 'POST': req = self.send_post(url=url, data=data, cookie=cookie, header=header, save_cookie=save_cookie) else: req = None logging.error("请求方式错误") Logger().close_logger() return req
def upload_file(self, method, url, file_name, cookie=None, header=None): """ 文件上传:待验证 :param file_name: 文件名称 :param method:请求方法 :param url:请求地址 :param cookie:请求cookie :param header:请求头信息 :return: """ base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) file_path = os.path.join(base_dir + '/download_file/' + file_name) file = {'file': (f'{file_name}', open(file_path, 'rb'))} if "http" not in url: url = self.base_url + '/' + url try: response = requests.request(method, url, files=file, cookies=cookie, headers=header, timeout=self.timeout, verify=self.verify) logging.info("上传[{0}]成功".format(file_name)) res = response.text except Exception as msg: logging.error("上传文件失败:{0".format(msg)) res = None Logger().close_logger() return res
def __init__(self, file_name=None): if file_name is None: self.file_name = "cookie.json" else: self.file_name = file_name self.filepath = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + '/config/' + self.file_name) Logger().close_logger()
def getXmlUser(self, node, name): ''' 获取节点中属性值 :param node: xml文件中节点名称 :param name: xml文件中属性名称 :return: ''' data = None try: dom = minidom.parse(self.dir_base()) db = dom.documentElement itemlist = db.getElementsByTagName(node) item = itemlist[0] if item.getAttribute(name): data = item.getAttribute(name) logging.info("获取节点[{0}]下[{1}]的属性值:{2}".format( node, name, data)) else: data = None logging.info("无法获取节点下的属性值") except: logging.error("无法获取节点") finally: Logger().close_logger() return data
def send_email(self): if self.annex == "1": logging.info("邮件包含附件") self.email_anner() else: logging.info("邮件不包含附件") self.email_noanner() Logger().close_logger()
def login(self, username, password): self.input_value(self.username_loc, username) logging.info("用户名:{0}".format(username)) self.input_value(self.password_loc, password) logging.info("密码:{0}".format(password)) self.click_element(self.login_loc) logging.info("点击登录按钮") Logger().close_logger()
def get_cols(self): self.get_file() col = None try: logging.info("获取Excel总列数:{0}".format(self.table.ncols)) col = self.table.ncols except: logging.error("获取Excel总列数失败") Logger().close_logger() return col
def get_value(self, key=None): ''' 获取json文件内容 :param key: 获取json文件中指定key的值 :return: ''' with open(self.filepath, 'r', encoding='UTF-8') as f: data = json.load(f) logging.info("json文件数据为:{0}".format(data)) Logger().close_logger() return data if key is None else data.get(key)
def get_value(self, node, key): result = None try: cf = self.loading_config() result = cf.get(node, key) logging.info("成功获取[{0}]下的[{1}]={2}".format(node, key, cf.get(node, key))) except: logging.error("获取[{0}]下的[{1}]值失败".format(node, key)) finally: Logger().close_logger() return result
def main(): base_dir = os.path.dirname(os.path.abspath(__file__)) test_dir = os.path.join(base_dir + '/testcase') logging.info("获取测试case脚本路径:{0}".format(test_dir)) nowtime = time.strftime('%Y-%m-%d %H_%M') report_name = os.path.join(base_dir + '/report/' + nowtime + '-result.html') logging.info("存放报告文件路径:{0}".format(report_name)) discover = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py") with open(report_name, 'wb') as f: runner = BSTestRunner(stream=f, title="Test Report", description="Test case Result") runner.run(discover) Logger().close_logger()
def get_file_path(self): """ 获取文件路径 :return: """ base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if self.open_file is None: file_path = os.path.join(base_dir + '/data/' + 'template.xlsx') else: file_path = os.path.join(base_dir + '/data/' + self.open_file) Logger().close_logger() return file_path
def get_lines(self): ''' 获取Excel文件总行数 :return: ''' self.get_file() row = None try: logging.info("获取Excel总行数:{0}".format(self.table.nrows)) row = self.table.nrows except: logging.error("获取Excel总行数失败") Logger().close_logger() return row
def get_cols(self): """ 获取总列数 :return: """ col = None table = self.get_sheet() try: logging.info("获取Excel总列数:{0}".format(table.max_column)) col = table.max_column except Exception as msg: logging.error("获取Excel总列数失败:{0}".format(msg)) Logger().close_logger() return col
def get_rows(self): """ 获取Excel文件总行数 :return: """ row = None table = self.get_sheet() try: logging.info("获取Excel总行数:{0}".format(table.max_row)) row = table.max_row except Exception as msg: logging.error("获取Excel总行数失败:{0}".format(msg)) Logger().close_logger() return row
def get_excel_data(self): """ 获取文件每行数据,返回list :return: """ excel_case = read_ini.get_value('sys_default', 'excel_case') rows = self.get_rows() if excel_case: logging.info("忽略文件第一行数据") data = [self.get_row_datas(i + 1) for i in range(1, rows)] else: logging.info("获取文件所有内容") data = [self.get_row_datas(i + 1) for i in range(rows)] Logger().close_logger() return data
def get_openxlsx(self): """ 获取文件 :return: """ open_excel = None file_path = self.get_file_path() try: logging.info("获取Excel-xlsx文件:{0}".format(file_path)) open_excel = openpyxl.load_workbook(file_path) except Exception as msg: logging.error("获取Excel文件失败:{0}".format(msg)) Logger().close_logger() # open_excel.close() return open_excel
def get_row_datas(self, row): """ 获取行数据 :return: """ result = [] table = self.get_sheet() try: for i in table[row]: result.append(i.value) logging.info("获取Excel-xlsx第{0}行数据为{1}".format(row, result)) except Exception as msg: logging.error("获取Excel文件内容失败:{0}".format(msg)) Logger().close_logger() return result
def write_value(self, row, col, value): open_excel = self.get_openxlsx() try: # logging.info("获取Excel-xlsx的第{0}个sheet表".format(self.index + 1)) sheet = open_excel.worksheets[self.index] # logging.info("在工作表{0}中第{1}行第{2}列中写入值:{3}".format(open_excel.sheetnames[self.index], row, col, value)) sheet.cell(row, col).value = value logging.info("在工作表{0}中第{1}行第{2}列中写入值:{3}".format( sheet.title, row, col, value)) file_path = self.get_file_path() logging.info("保存文件:{0}".format(file_path)) open_excel.save(file_path) open_excel.close() except Exception as msg: logging.error("Excel中写入数据失败:{0}".format(msg)) Logger().close_logger()
def get_col_value(self,row,col): ''' 获取单元格的值 :param row: 行号 :param col: 列号 :return: 单元格值 ''' self.get_file() data = None try: logging.info("获取Excel第{0}行第{1}列的值:{2}".format(row,col,self.table.cell(row-1,col-1).value)) data = self.table.cell(row-1,col-1).value except: logging.error("获取Excel单元格值失败") Logger().close_logger() return data
def get_sheet(self): """ 获取文件完整路径 :return: """ table = None open_excel = self.get_openxlsx() try: sheet_names = open_excel.sheetnames logging.info("获取Excel-xlsx的第{0}个sheet".format(self.index + 1)) table = open_excel[sheet_names[self.index]] except Exception as msg: logging.error("获取Excel-xlsx的第{0}个sheet失败:{1}".format( self.index + 1, msg)) Logger().close_logger() # open_excel.close() return table
def get_data(self): ''' 获取文件数据内容 :return: ''' result = [] self.get_file() try: logging.info("获取Excel的总行数:{0}".format(self.table.nrows)) for i in range(self.table.nrows): logging.info("获取第{0}行数据:{1}".format(i+1,self.table.row_values(i))) col = self.table.row_values(i) result.append(col) except: logging.error("获取Excel文件内容失败") Logger().close_logger() return result
def get_col_datas(self, col): """ 获取列数据 :param col: :return: """ result = [] table = self.get_sheet() row = self.get_rows() try: for i in range(1, row + 1): result.append(table.cell(i, col).value) logging.info("获取Excel-xlsx第{0}列数据为{1}".format(col, result)) except Exception as msg: logging.error("获取Excel文件内容失败:{0}".format(msg)) Logger().close_logger() return result
def getXmlDate(self, node): ''' 获取xml文件节点中数据 :param value:xml 文件夹中单节点名称 ''' data = None try: dom = minidom.parse(self.dir_base()) db = dom.documentElement name = db.getElementsByTagName(node) data = name[0].firstChild.data logging.info("获取节点数据:{0}".format(data)) except: logging.error("无法获取节点数据") finally: Logger().close_logger() return data
def get_data_value(self, row, col): """ 获取单元格的值 :param row: 行号 :param col: 列号 :return: 单元格值 """ data = None table = self.get_sheet() try: logging.info("获取Excel第{0}行第{1}列的值:{2}".format( row, col, table.cell(row, col).value)) data = table.cell(row, col).value except Exception as msg: logging.error("获取Excel单元格值失败:{0}".format(msg)) Logger().close_logger() return data
def get_value_row(self, value): """ 获取指定值所在行 :param value: :return: """ num = 1 table = self.get_sheet() rows = table.max_row for row in range(rows): all_data = [i.value for i in table[row + 1]] for data in all_data: if value == data: logging.info("值{0}所在的行为:{1}".format(value, num)) Logger().close_logger() return num num = num + 1 return None
def write_value(self, data, key=None): ''' 将数据写入json文件 :param data: 需要写入的数据 :param key: 将数据写入json文件中指定key的值 :return: ''' if key is None: data_value = json.dumps(data, ensure_ascii=False) logging.info("写入json文件数据为:{0}".format(data_value)) with open(self.filepath, "w+", encoding='UTF-8') as f: f.write(data_value) else: data_value = self.get_value() data_value[key] = data with open(self.filepath, "w+", encoding='UTF-8') as f: f.write(json.dumps(data_value, ensure_ascii=False)) logging.info("写入json文件数据为:{0}".format(data_value)) Logger().close_logger()
def email_noanner(self): try: msg = MIMEText(self.content, 'html', 'utf-8') msg['Subject'] = Header(self.subject, 'utf-8') msg['From'] = self.sender msg['To'] = ';'.join(self.receives) smtp = smtplib.SMTP_SSL(self.smtpserver, 465) logging.info("连接邮件服务器") smtp.helo(self.smtpserver) smtp.ehlo(self.smtpserver) smtp.login(self.sender, self.password) logging.info("登录邮件服务器") smtp.sendmail(self.sender, self.receives, msg.as_string()) logging.info("发送邮件成功") smtp.quit() except: logging.error("发送邮件失败") finally: Logger().close_logger()
def send_post(self, url, data=None, cookie=None, header=None, save_cookie=None): """ 发送post请求 :param url: 请求地址 :param data: 请求参数 :param cookie: 请求cookie :param header: 请求头信息 :param save_cookie: 是否获取cookie :return: """ if "http" not in url: if url[0] in '/': url = self.base_url + url else: url = self.base_url + '/' + url logging.info("完整的请求地址:{0} 请求方式为:{1}".format(url, 'post')) response = requests.post(url=url, data=data, cookies=cookie, headers=header, timeout=self.timeout, verify=self.verify) if save_cookie is not None: cookie_value_jar = response.cookies cookie_value = requests.utils.dict_from_cookiejar(cookie_value_jar) logging.info("cookies信息为:{0}".format(cookie_value)) read_json.write_value(cookie_value) try: res = json.loads(response.text) logging.info("返回数据为json格式") except: res = response.text Logger().close_logger() return res
def open_browser(browertype=None): driver_path = read_ini.get_value('sys_default', 'driver_path') if browertype is not None: if "Chrome" in browertype: logging.info("启动Chrome浏览器,驱动位置:{0}".format(driver_path)) driver = webdriver.Chrome(driver_path) elif "firefox" in browertype: logging.info("启动Firefox浏览器,驱动位置:{0}".format(driver_path)) driver = webdriver.Firefox(driver_path) elif "ie" in browertype: logging.info("启动Ie浏览器,驱动位置:{0}".format(driver_path)) driver = webdriver.Ie(driver_path) elif "PhantomJS" in browertype: logging.info("启动PhantomJS浏览器,驱动位置:{0}".format(driver_path)) driver = webdriver.PhantomJS(driver_path) else: logging.info("启动默认Chrome浏览器,驱动位置:{0}".format(driver_path)) driver = webdriver.Chrome(driver_path) else: logging.info("启动默认Chrome浏览器,驱动位置:{0}".format(driver_path)) driver = webdriver.Chrome(driver_path) Logger().close_logger() return driver