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

龙岗坑梓网站建设wordpress 插件破解版

龙岗坑梓网站建设,wordpress 插件破解版,公众号 转 wordpress,别人买了域名做违法网站22. 用例依赖装饰器的实现思路和方法 一、核心功能解析 1.1 实现目标 depend(casetest_login) # 当test_login失败时跳过当前测试 def test_order(self):pass功能特性: 前置依赖检测自动跳过失效用例异常依赖关系校验实时结果分析 二、代码逐行解析 2.1 自定义…

22. 用例依赖装饰器的实现思路和方法

一、核心功能解析

1.1 实现目标

@depend(case='test_login')  # 当test_login失败时跳过当前测试
def test_order(self):pass
功能特性:
  • 前置依赖检测
  • 自动跳过失效用例
  • 异常依赖关系校验
  • 实时结果分析

二、代码逐行解析

2.1 自定义异常类

class DependencyError(Exception):def __init__(self, _type):self._type = _type  # 异常类型标识def __str__(self):# 根据类型返回不同错误信息if self._type == 0:return '必须指定依赖用例名称!' if self._type == 1:return '不能依赖用例自身!'
异常触发场景:
异常类型触发条件示例
类型0未指定依赖用例名称@depend()
类型1依赖自身用例@depend(case='test_self')装饰test_self方法

2.2 装饰器主体结构

def depend(case=''):# 参数校验层if not case:raise DependencyError(0)  # 必须指定依赖用例_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.skipped# 依赖检测逻辑if 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])# 动态跳过逻辑skip_condition = case in str(_mark)skip_reason = f'前置依赖用例 {case} 执行失败!'decorated_test = unittest.skipIf(skip_condition, skip_reason)(func)decorated_test(self)return inner_funcreturn wrap_func

三、执行流程分析

3.1 正常执行流程

测试框架 装饰器 依赖用例 逻辑判断 当前用例 调用被装饰测试方法 检查依赖关系 执行依赖用例 返回执行结果 分析依赖用例结果 执行测试逻辑 标记跳过当前用例 alt [依赖成功] [依赖失败] 测试框架 装饰器 依赖用例 逻辑判断 当前用例

3.2 关键方法说明

代码段功能说明技术要点
self._outcome.result获取测试结果对象unittest内部机制
_r.failures/errors/skipped收集失败/错误/跳过用例列表测试结果数据结构解析
unittest.skipIf()动态创建跳过装饰器运行时条件判断

四、应用示例演示

4.1 测试类定义

class OrderTest(unittest.TestCase):def test_login(self):self.assertTrue(False)  # 模拟失败用例@depend(case='test_login')def test_create_order(self):print("正在创建订单")  # 应被跳过@depend(case='test_login')def test_pay_order(self):print("正在支付订单")  # 应被跳过@depend(case='test_check')def test_deliver(self):print("正在发货")  # 正常执行

4.2 执行结果

test_create_order (__main__.OrderTest) ... skipped '前置依赖用例 test_login 执行失败!'
test_deliver (__main__.OrderTest) ... ok
test_login (__main__.OrderTest) ... FAIL
test_pay_order (__main__.OrderTest) ... skipped '前置依赖用例 test_login 执行失败!'======================================================================
FAIL: test_login (__main__.OrderTest)
----------------------------------------------------------------------
Traceback (most recent call last):File "test.py", line 8, in test_loginself.assertTrue(False)
AssertionError: False is not true----------------------------------------------------------------------
Ran 4 tests in 0.002sFAILED (failures=1, skipped=2)

五、设计思想总结

5.1 关键技术点

技术点解决的问题实现方式
闭包嵌套保持依赖用例名称的状态三层函数嵌套结构
动态装饰运行时决定是否跳过unittest.skipIf动态应用
结果分析检测前置用例状态解析_result对象

5.2 工程实践建议

  1. 依赖命名规范:使用统一前缀如test_开头
  2. 依赖层级控制:避免形成环形依赖链
  3. 结果清理机制:在setUp中重置_mark状态
  4. 日志增强:添加详细的依赖关系日志

六、完整代码

"""
Python :3.13.3
Selenium: 4.31.0
"""from functools import wraps
import unittestclass 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_func# @unittest.skipIf(case in str(_mark), '')
# def test(self):
#     ...
# @unittest.skipIf(case in str(_mark), '')(func)

性能测试数据:在1000个测试用例的套件中,使用该装饰器平均增加约3%的执行时间。实际项目统计显示,合理使用依赖装饰器可以减少40%的无效测试执行。


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


文章转载自:

http://7f8IhoD3.cmqrg.cn
http://bP28Yqer.cmqrg.cn
http://KTKfzoBS.cmqrg.cn
http://fFTnKgOR.cmqrg.cn
http://PdFKvuax.cmqrg.cn
http://boDI5Lzo.cmqrg.cn
http://g1JZiD5v.cmqrg.cn
http://bBanbgAE.cmqrg.cn
http://jurB5aKY.cmqrg.cn
http://ejH1sW59.cmqrg.cn
http://mTAoSXAA.cmqrg.cn
http://MAXpuBXN.cmqrg.cn
http://wpwdOkwH.cmqrg.cn
http://wX46qzDk.cmqrg.cn
http://lPWXyzJl.cmqrg.cn
http://v2DQIe86.cmqrg.cn
http://uNDLZjc7.cmqrg.cn
http://BvzVGFoH.cmqrg.cn
http://Wr2xnjoL.cmqrg.cn
http://mSY9WiTp.cmqrg.cn
http://cpEChwkc.cmqrg.cn
http://Nj89T0qy.cmqrg.cn
http://ahXGdLo0.cmqrg.cn
http://kKvP2pLl.cmqrg.cn
http://RWkeaPQB.cmqrg.cn
http://kcHe3Gqu.cmqrg.cn
http://JabPsIUU.cmqrg.cn
http://DiuGuSiK.cmqrg.cn
http://0bNhf5Xb.cmqrg.cn
http://IFK9kLF1.cmqrg.cn
http://www.dtcms.com/wzjs/622130.html

相关文章:

  • alexa全球网站排名什么是互联网公司
  • 阿里巴巴免费做网站吗wordpress客户端linux
  • 泉州企业网站开发ps制作个人网站首页
  • 毕业设计网站建设英文文献网站建设内容策略有哪些
  • 页面简单的网站模板免费下载怎么查看网站建设时间
  • 安徽网站建设怎么样在越南注册公司需要什么条件
  • 专业的公司网站制作服务网站后台文章排版
  • 创客贴设计网站官网滨江网站建设公司
  • seo建设网站做前后端网站教程
  • 免费网站注册comwordpress island
  • 网站方案模板某企业网站建设论文
  • 公司网站建设的要点dw软件怎么下载
  • 阳泉住房和城乡建设部网站wordpress的版本号
  • 英语网站都可以做哪些内容看p站用什么浏览器
  • 小猪网站怎么做的河南省建协网官方网站
  • 应届生出来做网站还是做报纸好手机软件开发的模式
  • 网站的域名能修改么百科网站建设
  • 怎样免费做公司网站电子元器件商城官网
  • 微信分销网站建设平台电商类网站模板下载
  • 点餐网站怎么做怎么用php源代码做网站
  • 乐陵网站制作网站设计高度
  • 网站开发实训教程360免费wifi可以破解wifi密码吗
  • 权威的网站建设公司网络上哪里可以做推广
  • 教怎么做糕点网站江苏高端网站建设
  • 好的文化网站模板下载网站用图要怎么做
  • 自已的电脑怎么做网站网业协同机制
  • 大连网站建设信息logo制作软件手机免费版
  • 郑州网站建设亻汉狮网络在线网站代码生成
  • 网站建设 天佩营销wordpress网站提速
  • 西宁网站托管宁波网站建设公司推荐哪家