def startAllCase(self): """ 使用HTMLTestRunner配置参数,输出报告路径、报告标题、描述 @:param filename 报告存放路径 @:param Report_title 报告标题 @:param Report_description 报告描述信息 """ Report_title = apiset().getConfigValues("report", "title") Report_description = apiset().getConfigValues("report", "description") discover = unittest.defaultTestLoader.discover(Config().case_path, pattern='test*.py', top_level_dir=None) file_path = Config().report_path try: os.mkdir(file_path) except: pass finally: filename = os.path.join(file_path, (time.strftime( '%Y-%m-%d %H_%M_%S', time.localtime(time.time())) + '.html')) fp = file(filename, 'wb') runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=Report_title, description=Report_description) try: runner.run(discover) except Exception, e: raise Exception(e.message)
def log(**kwargs): global loggers log_level = (int)(apiset().getConfigValues("log", "log_level")) log_path = Config().log_path if os.path.exists(log_path): log_file = os.path.join(log_path, datetime.datetime.now().strftime('%Y-%m-%d_%H_%M') + '.log') else: os.mkdir(r'%s' % log_path) log_file = os.path.join(log_path, datetime.datetime.now().strftime('%Y-%m-%d_%H_%M') + '.log') logger = logging.getLogger() logger.setLevel(log_level) if not logger.handlers: # 创建一个handler,用于写入日志文件 fh = logging.FileHandler(log_file) fh.setLevel(log_level) # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.ERROR) # 定义handler的输出格式 formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s') fh.setFormatter(formatter) ch.setFormatter(formatter) # 给logger添加handler logger.addHandler(fh) logger.addHandler(ch) loggers.update(dict(name=logger)) return logger
def __init__(self): reload(sys) sys.setdefaultencoding('utf-8') self.version_name = apiset().getConfigValues("version", "version_name") self.header = { "Accept": "application/json", "versionName": self.version_name }
def sendEmail(): root_path = os.path.dirname(__file__) report_path = [os.path.join(root_path, 'Report.py'), ] actionReport(report_path) report_list = [os.path.join(root_path, 'TestReport'), ] re_list = sortReportFile(report_list) # 邮件内容 mail_body = '' mail_user = apiset().getConfigValues("email_from", "username") mail_pwd = apiset().getConfigValues("email_from", "password") mail_to = apiset().getConfigItems("email_to") email_to = [] for i in range(0, len(mail_to)): if mail_to[i][1] != None: email_to.append(mail_to[i][1]) msg = MIMEMultipart() msg['Subject'] = apiset().getConfigValues("report", "title") msg['From'] = mail_user msg['to'] = ';'.join(email_to) msg['Date'] = time.strftime('%a,%d %b %Y %H:%S %z') for file in re_list: report_obj = open(file, 'rb') mail_bady_value = report_obj.read() mail_body += mail_bady_value # 创建附件,并添加到msg part = MIMEBase('application', 'octet-stream') part.set_payload(mail_bady_value) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file)) msg.attach(part) report_obj.close() # 创建MIMEText,并添加到msg body = MIMEText(mail_body, _subtype="html", _charset='utf-8') msg.attach(body) smtp = smtplib.SMTP() smtp.connect("smtp.163.com") print smtp try: smtp.login(mail_user, mail_pwd) smtp.sendmail(mail_user, email_to, msg.as_string()) print 'email has send out !' except smtplib.SMTPAuthenticationError,e: print e smtp.quit()
def __init__(self, host=None, port=None, user=None, password=None): config = apiset().getConfigItems("mysql_db") if host == None: self.host = config[0][1] else: self.host = host if port == None: self.port = int(config[1][1]) else: self.port = port if user == None: self.user = config[2][1] else: self.user = user if password == None: self.password = config[3][1] else: self.password = password
def setUpClass(cls): cls.login = Login("", "") cls.token = cls.login.getToken() cls.shopId = cls.login.getShopId() cls.version_name = apiset().getConfigValues("version", "version_name")
def __init__(self): self.redis_items = apiset().getConfigItems("redis_db") pool = redis.ConnectionPool(host=self.redis_items[0][1], port=self.redis_items[1][0], password=self.redis_items[2][1]) self.con = redis.Redis(connection_pool=pool)