def __init__(self, test_dir="", title=None, description=None): if test_dir == "": self.test_dir = current_path(r"test_case") else: self.test_dir = current_path(test_dir) self.discover = unittest.defaultTestLoader.discover(self.test_dir, pattern='test*.py') self.title = title self.description = description # 定义报告存放的路径 self.path = current_path(r"\result\report", mkdir=True)
def __init__(self): self.log = Log().log() # 初始化配置文件, cfg = Config().testcase() path = cfg["path"] self.path = current_path(path) file = self.path + "测试用例.xlsx" self.log.debug("测试用例文件路径: %s", file) try: self.excel = xlrd.open_workbook(file, "rb") except FileNotFoundError as f: self.log.error(f) self.case_title = cfg["cast_title"].strip(",").split(',')
class TestICCardCheckIn(BaseTest): """校验IC卡的有效性""" file = current_path("test_case_data") + r"ICCardCheckIn.yml" def setUp(self): super().setUp() self.resource = "/ICCardCheckIn" self.method = "post" self.s.set(url=self.test_url, resource=self.resource, method=self.method) @file_data(file) def test_ICCardCheckIn(self, data, result): """输入{data}""" r = self.s.request(json=data) self.log.info(r.text) self.assertEqual(result, r.text, "返回结果与预期不一致")
class SelectOperation(BaseTest): file = current_path("test_case_data") + r"SelectOperation.yml" def setUp(self): super().setUp() # 前置条件 self.s.set(self.test_url, "/ICCardCheckIn", "post") self.s.request(json={"cardNo": 1001}) self.resource = "/SelectOperation" self.method = "post" self.log.info(self.method) self.s.set(self.test_url, self.resource, self.method) @file_data(file) def test_SelectOperation(self, data, result): """输入{data}""" r = self.s.request(json=data) self.log.info(r.text) self.assertEqual(result, r.text, "返回结果与预期不一致")
# 附件 if mail_file is not None and os.path.exists(mail_file): with open(mail_file, 'rb') as f: msg_file = MIMEText(f.read(), 'base64', 'utf-8') msg_file['Content-Type'] = 'application/octet-stream' msg_file[ 'Content-Disposition'] = 'attachment; filename=test_report.html' msg.attach(msg_file) try: # 发送 __log.info("sending email...") smtp = smtplib.SMTP_SSL(smtp_server, 465) # 1.连接邮件服务器 # smtp.connect() # 2.登录 smtp.login(user, password) # 3.发送邮件 __log.debug(receiver_list) smtp.sendmail(sender, receiver_list, msg.as_string()) # 4.退出 smtp.quit() __log.info("send email sessful") except Exception as e: __log.error(e) if __name__ == "__main__": f = current_path() + '/test_case_data/test.png' sendemail("邮件主题", "邮件正文")
class Logging(object): """ 日志输出配置 """ # logging 配置文件 __config = Config().logging() __output_format = __config["output_format"] __dir = __config["dir"] __log_path = current_path(__dir) __handler = __config["handler"] __console = __config["console"] __handler_name = __config["handler_level"] __console_name = __config["console_level"] _nameToLevel = { 'CRITICAL': logging.CRITICAL, 'FATAL': logging.FATAL, 'ERROR': logging.ERROR, 'WARN': logging.WARNING, 'WARNING': logging.WARNING, 'INFO': logging.INFO, 'DEBUG': logging.DEBUG, 'NOTSET': logging.NOTSET, } __handler_level = _nameToLevel[__handler_name] __console_level = _nameToLevel[__console_name] __logger = None def __init__(self): # 创建日志文件夹 if not os.path.exists(self.__log_path): os.mkdir(self.__log_path) # 初始化 self.__logger = logging.getLogger(__name__) self.__logger.setLevel(logging.DEBUG) # 设置log文件输出 级别.路径.格式化 if self.__handler == "1": # 创建,路径 handler = logging.FileHandler(filename=self.__log_path + timestamp() + "--" + self.__handler_name + ".log", encoding='utf-8') # 级别 handler.setLevel(self.__handler_level) # 格式化 formatter = logging.Formatter(self.__output_format) handler.setFormatter(formatter) # 添加 self.__logger.addHandler(handler) # 设置控制台日志 级别格式化 if self.__console == "1": # 创建 console = logging.StreamHandler() # 级别 console.setLevel(self.__console_level) # 添加 self.__logger.addHandler(console) def debug(self, msg, *args, **kwargs): """debug级别日志""" self.__logger.debug(msg, *args, **kwargs) def info(self, msg, *args, **kwargs): """info级别日志""" self.__logger.info(msg, *args, **kwargs) def warning(self, msg, *args, **kwargs): """warning级别日志""" self.__logger.warning(msg, *args, **kwargs) def error(self, msg, *args, **kwargs): """error级别日志""" self.__logger.error(msg, *args, **kwargs) def get_logger(self): """ get logger :return: """ return self.__logger
def __init__(self): # 本地文件夹路径 self.dir_path = current_path("config") if not os.path.exists(self.dir_path): os.mkdir(self.dir_path)
self.log.debug(x) cases = [] suit = {} casetitle = {} case = {} # sleep(0.001) return suits if __name__ == "__main__": suits = Case().import_list() x = 0 y = 0 title = ["用例编号", "步骤名称", "输入", "预期输出", "实际输出", "是否通过", "备注"] xlsx = xlsxwriter.Workbook(current_path("test_case_data") + "case.xlsx") sheet = xlsx.add_worksheet("case") while y < len(title): sheet.write(0, y, title[y]) y += 1 for suit in suits: # pprint(suit["casetitle"]) for case in suit["cases"]: x += 1 sheet.write(x, 0, case["用例编号"]) sheet.write(x, 1, case["步骤名称"]) sheet.write(x, 2, case["输入"]) sheet.write(x, 3, case["预期输出"]) sheet.write(x, 4, case["实际输出"])