当前位置: 首页 > wzjs >正文

中国建筑集团招聘信息seo顾问

中国建筑集团招聘信息,seo顾问,出国劳务信息,网站配资公司网站日志装饰器的开发 一、日志功能实现原理 1.1 日志装饰器核心代码 def logs(func):wraps(func) # ✅保持函数元数据def wrap_func(*args, **kwargs):# 捕获原始参数tuple_args argsdict_kwargs kwargs# 执行目标函数(无异常处理)func(*args, **kwar…

日志装饰器的开发

一、日志功能实现原理

1.1 日志装饰器核心代码

def logs(func):@wraps(func)  # ✅保持函数元数据def wrap_func(*args, **kwargs):# 捕获原始参数tuple_args = argsdict_kwargs = kwargs# 执行目标函数(无异常处理)func(*args, **kwargs)  # ⚠️风险点# 记录DEBUG级别日志log.debug(f'{func.__name__}(*args:tuple = *{tuple_args}, **kwargs:dict = **{dict_kwargs})',extra={'status': 'PASS'}  # ⚠️状态硬编码)return wrap_func

1.2 功能特性对照表

特性当前实现推荐改进
日志触发时机函数执行后增加前置/后置钩子
异常处理未捕获异常添加try/except块
状态标识固定PASS动态设置执行结果
敏感数据处理明文记录添加参数过滤机制

二、测试验证流程

2.1 测试用例设计

class PaymentTest(unittest.TestCase):@logs@depend('user_login')def test_creditcard_pay(self, card="622588******1234", cvv=123):"""正常支付测试"""self.process_payment(100)@logsdef test_failed_case(self):"""异常情况测试"""raise ValueError("模拟业务异常")

2.2 实际执行结果

# test_creditcard_pay 日志
14:35:22 - demo_log - DEBUG - PASS - test_creditcard_pay(*args:tuple = *(), **kwargs:dict = **{'card': '622588******1234', 'cvv': 123})# test_failed_case 日志
14:35:23 - demo_log - DEBUG - PASS - test_failed_case(*args:tuple = *(), **kwargs:dict = **{})
ERROR: test_failed_case (__main__.PaymentTest)
Traceback...ValueError: 模拟业务异常

2.3 问题分析清单

1. 数据安全风险:CVV等敏感字段明文记录
2. 状态不准确:异常用例仍标记PASS
3. 异常丢失:错误堆栈未写入日志系统
4. 依赖缺陷:前置用例失败时仍执行日志记录

三、企业级改进方案

(基于头部互联网公司测试规范)

3.1 增强型日志装饰器

def secure_log(level=logging.INFO):"""支持动态日志级别和参数过滤"""def decorator(func):@wraps(func)def wrapper(*args, **kwargs):# 参数脱敏处理safe_kwargs = {k: '***MASKED***' if 'cvv' in k else vfor k, v in kwargs.items()}status = "FAIL"try:result = func(*args, **kwargs)status = "PASS"return resultexcept Exception as e:log.error(f"{func.__name__}执行异常", exc_info=True,extra={"status": "ERROR"})raisefinally:log.log(level,f"{func.__name__}执行状态: {status}",extra={"safe_args": args,"safe_kwargs": safe_kwargs})return wrapperreturn decorator

3.2 改进后执行效果

# 成功用例日志
14:40:15 - demo_log - INFO - PASS - test_creditcard_pay执行状态: PASS# 失败用例日志
14:40:16 - demo_log - ERROR - ERROR - test_failed_case执行异常
Traceback (...完整错误堆栈...)
14:40:16 - demo_log - INFO - FAIL - test_failed_case执行状态: FAIL

四、大厂最佳实践经验

来自某金融科技公司的测试规范要求

  1. 日志记录必须包含唯一追踪ID(trace_id)实现全链路追踪
  2. 敏感字段(密码、CVV等)需在前置处理层进行脱敏
  3. 测试日志应与业务日志分离存储,保留周期不少于180天
  4. 采用动态日志级别策略:成功用例INFO级别,失败用例ERROR级别
  5. 每个测试用例的日志必须包含环境标识(env)、执行机节点(node)等元数据
# 大厂标准实现示例
class EnterpriseLogger:def __init__(self):self.log = logging.getLogger("secure_test")self.log.addFilter(SensitiveFilter())def record(self, case, status, metadata=None):log_data = {"trace_id": uuid.uuid4().hex,"env": os.getenv("DEPLOY_ENV"),"node": socket.gethostname(),"case": case.__name__,"status": status,"timestamp": datetime.utcnow().isoformat()}if metadata:log_data.update(metadata)self.log.info(json.dumps(log_data))

五、完整代码

"""
Python :3.13.3
Selenium: 4.31.0decorators.py
"""import unittest
from functools import wraps
from chap6.logs import logclass DependencyError(Exception):def __init__(self, _type):self._type = _typedef __str__(self):if self._type == 0:return f'Dependency name of test is required!'if self._type == 1:return f'Dependency name of test can not the case self!'return Nonedef depend(case=''):if not case:raise DependencyError_mark = []def wrap_func(func):@wraps(func)def inner_func(self):if case == func.__name__:raise DependencyError(1)_r = self._outcome.result_f, _e, _s = _r.failures, _r.errors, _r.skippedif not (_f or _e or _s):func(self)if _f:_mark.extend([fail[0] for fail in _f])if _e:_mark.extend([error[0] for error in _e])if _s:_mark.extend([skip[0] for skip in _s])unittest.skipIf(case in str(_mark),f'The pre-depend case :{case} has failed! Skip the specified case!')(func)(self)return inner_funcreturn wrap_funcdef logs(func):@wraps(func)def wrap_func(*args, **kwargs):tuple_args = argsdict_kwargs = kwargsfunc(*args, **kwargs)log.debug(f'{func.__name__}(*args:tuple = *{tuple_args}, **kwargs:dict = **{dict_kwargs})',extra={'status': 'PASS'})return wrap_func

「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路! 🚀

http://www.dtcms.com/wzjs/512991.html

相关文章:

  • 建筑设计说明万能模板常用seo站长工具
  • 手工活接单正规平台seo是什么
  • 简单网站制作实验报告爱站网关键词挖掘机
  • 门户网站编辑联系方式seo基础知识培训视频
  • 宽屏网站模板html哪里有网站推广优化
  • 58同城给做网站营销战略有哪些内容
  • 哪些网站是用jsp做的策划方案网站
  • 自动化的网站建设怎样做自己的网站
  • 深圳市网站建设科技公司网络口碑营销
  • 赣州人才网最新招聘信息2023年seo诊断站长
  • 商丘网站建设和制作软文广告文案
  • 给单位做网站需要备案吗游戏推广员怎么做
  • 婚纱设计网站活动策划方案
  • 找人做的网站怎么网络推广公司有多少家
  • 自己制作上传图片的网站怎么做浙江seo公司
  • 网站内容更新软件市场营销渠道
  • 仿皮皮淘网站开发全程培训网络推广搜索引擎
  • 做一个企业网站要多久长沙网站seo源头厂家
  • 烟台网站建设科技长沙网站seo公司
  • 上海推牛网络科技有限公司东莞外贸优化公司
  • 网站建设公司网站网络营销产品策略分析
  • 淘宝内部优惠券网站建设网站竞价推广
  • 被墙网站怎么做301跳转关键词优化推广公司哪家好
  • 佛山市住房和建设局网站首页网络营销推广实战宝典
  • 网站建设公司itcask如何查询百度收录情况
  • 永康网站建设的公司长沙建设网站制作
  • 网站维护费用包括哪些高州新闻 头条 今天
  • 电子商务网站建设与维护中国十大企业管理培训机构
  • 长沙网站建设推广服务做电商必备的几个软件
  • 网站建设教程怎么建推广计划书范文