自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(342)
  • 资源 (6)
  • 收藏
  • 关注

原创 课外活动:大语言模型Claude的技术解析 与 自动化测试框架领域应用实践

大语言模型Claude在技术解析与测试领域应用中展现出显著优势。其核心特性包括200K tokens的上下文窗口、92.3%的逻辑推理准确率、78 tokens/秒的代码生成速度以及原生图文混合处理能力,使其在长文档处理、复杂场景稳定性、实时交互效率和多模态支持方面优于GPT-4 Turbo。Claude的开发目标聚焦于安全可靠、垂直优化和效率优先,内置50+安全准则,特别训练代码理解能力,并降低单次训练碳足迹40%,响应延迟<800ms。在自动化测试领域,Claude通过智能测试系统架构和依赖管理装饰器

2025-05-23 19:39:38 209

原创 23. 装饰器应用之测试用例的依赖实现

本文介绍了如何通过装饰器实现测试用例的依赖管理,提升测试效率和维护性。文章首先解析了测试类的双继承结构,结合了测试框架和页面操作能力。随后,详细分析了基础登录测试和依赖搜索测试的实现,展示了装饰器在确保前置条件满足和自动跳过失败用例中的作用。文章还探讨了依赖装饰器的工作原理,并通过成功和失败场景的演示,说明了其在实际应用中的效果。最后,总结了混合继承的优势和工程实践建议,强调了依赖层级控制、原子化测试设计等关键点。通过合理使用依赖管理,可以显著减少测试执行时间和维护成本。

2025-05-23 15:49:14 429

原创 课外知识:Python方法绑定机制与装饰器传参详解 与 实战

本文详细解析了Python中的方法绑定机制与装饰器传参。首先,介绍了绑定方法与未绑定方法的区别,绑定方法自动传递self,而未绑定方法需要手动传递self。接着,通过代码示例展示了装饰器中未绑定方法的使用场景,解释了为什么装饰器需要手动传递self,并提供了装饰器语法展开和方法绑定状态变化的图示。最后,通过实战练习,展示了如何实现参数校验和执行时间统计的装饰器,并提供了练习答案与解析。文章总结指出,理解方法绑定机制有助于掌握装饰器传参逻辑,避免参数传递错误。

2025-05-22 22:50:10 436

原创 进阶知识:用例依赖装饰器的实现方法的 代码细节问题解析

本文详细解析了在Python单元测试框架中实现用例依赖装饰器的代码细节。首先,通过分解核心代码段,解释了装饰器的创建、应用和执行过程。接着,深入探讨了self参数在测试框架中的角色及其手动传递的必要性。文章还通过实例演示了装饰器的执行流程,并与普通装饰器进行了对比,强调了测试框架装饰器的特殊性。最后,指出了当前实现中可能存在的问题,并提供了改进建议。总结要点包括装饰器链式调用、self的核心作用、手动传递的必要性以及避免框架机制冲突。正确做法是返回装饰后的函数引用,让测试框架自行控制执行流程。

2025-05-22 22:36:18 257

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

本文介绍了如何通过装饰器实现测试用例的依赖管理。核心功能包括前置依赖检测、自动跳过失效用例、异常依赖关系校验和实时结果分析。通过自定义异常类DependencyError处理未指定依赖用例名称和依赖自身用例的情况。装饰器主体结构分为参数校验层、逻辑包装层和依赖校验层,使用unittest.skipIf动态创建跳过装饰器。执行流程中,装饰器首先检查依赖关系,执行依赖用例并分析结果,根据结果决定是否执行当前用例。应用示例展示了测试类定义和执行结果,设计思想总结了闭包嵌套、动态装饰和结果分析等关键技术点,并提出了

2025-05-22 18:32:46 641

原创 进阶知识:理解函数装饰器@wraps()的中 (*args, **kwargs) 的工作原理

函数装饰器中的*args和**kwargs是Python的参数解包语法,用于确保装饰器能够通用地处理所有类型的被装饰函数,无论目标函数是否有参数、有多少参数、使用何种传参方式。*args用于接收任意数量的位置参数,存储为元组,而**kwargs用于接收任意数量的关键字参数,存储为字典。这种设计保证了装饰器的灵活性和通用性,避免了因参数丢失导致的异常。在实际工程中,使用*args和**kwargs的装饰器能够适配任意参数形式的函数,支持未来参数变更无需修改装饰器,同时保持参数结构的完整性。尽管使用*args和

2025-05-21 15:04:35 1213

原创 进阶知识:理解函数装饰器@wraps()的返回值逻辑 和 闭包的深度解析

本文深入解析了Python中函数装饰器@wraps()的返回值逻辑和闭包机制。首先,通过代码示例展示了装饰器的三层嵌套结构及其执行顺序,重点介绍了@wraps()如何保留被装饰函数的元信息。接着,详细探讨了闭包的定义及其在装饰器中的应用,强调了闭包在状态保持、延迟执行等场景中的价值。文章还对比了闭包与类封装、全局变量等替代方案的优缺点,指出闭包在简单状态管理中的优势。最后,总结了装饰器设计思想,强调了闭包在传递参数和保持状态中的重要性,并提供了性能测试数据,说明合理使用闭包可以显著减少代码量。

2025-05-21 13:24:58 474

原创 进阶知识:自动化框架开发之有参的函数装饰器@wraps()和无参之间的对比

本文深入探讨了Python中有参函数装饰器的开发与应用,重点解析了其核心代码结构、与无参装饰器的差异、以及@wraps装饰器在保留函数元信息中的关键作用。通过对比分析,文章展示了有参装饰器在动态调整逻辑、参数传递和结构层级上的优势。此外,文章还详细介绍了参数化装饰器在动态日志控制、条件执行和性能监控等场景中的实际应用,并提供了最佳实践建议,包括始终使用@wraps、参数类型检查、默认参数设置和文档注释完善。最后,文章通过错误示例和性能测试数据,强调了合理使用参数化装饰器的重要性,指出其在减少重复代码量方面的

2025-05-20 19:36:38 665

原创 进阶知识:无参的函数装饰器之深入理解@wraps()

@wraps(func)是functools模块中的装饰器工具,主要用于保留被装饰函数的元信息,如函数名称(__name__)和文档字符串(__doc__)。通过使用@wraps(func),装饰器返回的新函数会继承原函数的属性,保持代码的透明性。对比不使用@wraps的情况,后者会导致函数元信息丢失,调试和文档生成时难以追踪原始函数。@wraps(func)在框架开发、单元测试、API文档生成和调试定位等场景中尤为重要,建议始终使用以确保装饰器的透明性和文档一致性。

2025-05-20 18:44:14 956

原创 进阶知识:自动化测试框架开发之无参的函数装饰器

本文详细解析了自动化测试框架中无参函数装饰器的开发与应用。通过代码执行顺序、逐行解析和必要性分析,阐述了装饰器在解决代码复用、功能扩展和维护成本等问题上的优势。文章还提供了装饰器开发规范和在测试框架中的典型应用示例,强调了装饰器在实现AOP(面向切面编程)和提升代码可维护性方面的核心价值。最后,通过完整代码展示了装饰器的实际应用,并总结了其在自动化测试框架中的重要性。

2025-05-20 17:22:12 639

原创 21. 自动化测试框架开发之Excel配置文件的测试用例改造

本文介绍了如何通过Excel配置文件实现自动化测试用例的改造。首先,测试框架的核心架构依赖于unittest、paramunittest、页面对象模型和Excel数据读取器。其次,通过ExcelReader加载Excel数据,支持参数化测试。测试用例参数化方案包括使用paramunittest和subTest,后者支持单测试方法管理多组数据,失败时继续执行后续用例。关键技术点包括数据驱动流程和异常处理机制,确保测试失败时自动截图并保留异常堆栈。Excel数据规范要求第一行为标题行,列名与代码参数对应。工程实

2025-05-20 09:56:43 1068

原创 20. 自动化测试框架开发之Excel配置文件的IO开发

本文介绍了自动化测试框架中Excel配置文件IO开发的核心内容。首先,解析了类继承体系,包括文件基类File和Excel读取器ExcelReader,并说明了版本依赖关系,强调使用xlrd==1.2.0以支持xlsx格式。接着,详细说明了初始化参数,如文件路径、工作表名称或索引、是否包含标题行等。数据解析流程包括文件验证、工作簿加载、工作表选择和数据读取,支持标题模式和非标题模式两种输出格式。文章还提供了使用示例,展示了如何读取测试用例和配置参数,并列举了常见异常类型及处理建议。最后,提出了性能优化建议,如

2025-05-19 18:15:57 926

原创 基础知识:Python类里面的@property装饰器的作用

@property装饰器在Python中用于将方法转换为属性,从而实现访问控制、数据验证和计算属性等功能。通过@property,可以将方法调用转换为属性访问,使得代码更加简洁和直观。基础用法包括属性的getter和setter方法,高级应用则涉及数据校验、计算属性、缓存计算结果和动态更新属性等场景。@property还支持只读属性和属性访问日志等特殊应用。与传统方法相比,@property在数据校验、属性访问控制、计算属性和向后兼容性方面具有明显优势。最佳实践建议适度使用@property,保持简单

2025-05-19 16:30:39 1064

原创 课外活动:再次理解页面实例化PO对象的魔法方法__getattr__

本文详细解析了在自动化测试中使用Python的魔法方法__getattr__实现页面对象(PO)模式的动态属性访问机制。通过__getattr__方法,可以在访问未定义属性时动态加载YAML配置文件中的元素定位信息,并返回相应的WebElement对象。文章从核心实现原理、执行流程、配置加载、属性访问、异常处理等多个方面进行了深入分析,并对比了传统写法与实例化PO写法的优劣。此外,还提出了性能优化方向,如元素缓存机制和预加载策略,以提高测试执行效率。最后,文章强调了配置规范和异常处理的最佳实践,确保代码的可

2025-05-18 20:00:23 977

原创 课外活动:为什么继承对象相比于页面实例化PO对象要改比较多代码?

在页面对象(PO)模式中,继承式PO与实例化PO在代码维护和扩展性上存在显著差异。继承式PO通过多层类继承实现,导致代码深度耦合,维护成本高,尤其在元素定位和配置管理上需要大量重复代码。而实例化PO通过对象组合和动态属性访问,减少了代码量,提升了可读性和维护性。实例化PO在元素定位、配置管理和测试用例结构上更为灵活,支持动态更新和延迟加载,减少了继承链的复杂性。实际测试表明,实例化PO在代码精简度、执行效率和维护成本上均优于继承式PO,尤其适用于中型以上项目。因此,建议在复杂场景下优先采用实例化PO模式。

2025-05-18 18:59:54 684

原创 19. 结合Selenium和YAML对页面实例化PO对象改造

本文介绍了如何通过结合Selenium和YAML对页面对象(PO)模式进行改造,提升自动化测试的灵活性和可维护性。改造的核心目标是通过动态属性访问和配置驱动模式,减少代码量并提高元素复用率。关键技术包括元编程、YAML配置管理和链式继承体系。页面基类通过__getattr__方法实现按需定位,YAML文件存储元素定位策略,支持跨页面元素复用。配置管理系统通过YAML文件动态加载元素配置,支持热更新和环境隔离。改造后的模式显著降低了维护成本,提升了执行效率和团队协作能力。最佳实践包括YAML规范建议和异常处理

2025-05-18 18:51:43 1060

原创 18. 结合Selenium和YAML对页面继承对象PO的改造

本文介绍了如何通过结合Selenium和YAML对页面对象(PO)模式进行改造,以提升代码的可维护性和灵活性。改造的核心思路是将元素定位信息从代码中解耦,通过YAML配置文件动态加载元素定位信息。改造后的PO模式具有以下优势:定位信息与代码解耦、支持多环境配置切换、提升代码可维护性、实现元素配置热更新。在技术实现上,页面基类通过双缓存机制(elements_yml与elements_pool)和表达式解析(key.value格式)来动态加载YAML配置,并通过白名单验证定位方法的合法性。配置管理系统通过s

2025-05-18 17:33:25 1298

原创 课外活动:需了解的海象运算符(:=)

海象运算符(:=)是Python 3.8引入的语法糖,允许在表达式内部完成变量赋值,提升代码的紧凑性和可读性。其核心应用场景包括优化条件表达式和增强循环控制,减少重复计算和临时变量的创建。海象运算符具有表达式级作用域,返回被赋值的值,并遵循标准优先级规则。在工程实践中,推荐用于条件判断、循环控制和推导式中的中间结果存储,但应避免在简单赋值或多层级嵌套表达式中使用。其设计哲学与传统赋值语句相比,具有更高的灵活性和性能优势。海象运算符的名称源于其符号形似海象的侧脸特征,发展历程可追溯至2018年的PEP 572

2025-05-18 16:55:27 692

原创 17. YAML文件配置和IO开发

本文介绍了YAML文件配置和IO开发的关键技术,重点围绕文件处理基类设计和YAML读取器的实现展开。文件处理基类通过路径合法性验证、异常快速失败机制和数据存储容器预定义,确保文件操作的可靠性。YAML读取器继承自文件处理基类,支持单文档和多文档模式,并通过延迟加载和二进制读取优化性能。文章还探讨了安全加载机制、配置加密集成、多环境配置切换等扩展应用场景,并提供了性能优化策略和异常处理增强建议。最后,提出了多格式支持扩展的进阶开发方向,展示了完整的代码实现。

2025-05-18 11:43:03 710

原创 16. 通用配置文件开发.py

本文介绍了通用配置文件的开发设计,重点包括配置文件架构、路径管理、测试套件组织、浏览器配置及环境适配等。配置文件采用模块化结构,支持环境隔离、路径动态化和参数集中化。路径管理系统通过动态构建适配不同操作系统,测试套件支持模块化组合和项目级聚合。浏览器配置中心区分通用参数和浏览器专属参数,便于灵活管理。环境适配方案支持多环境切换,并提供了配置安全策略。最后,文章提供了配置文件的完整代码示例,并强调了配置维护的重要性,包括版本控制和变更日志记录。

2025-05-18 10:01:38 817

原创 15. 原生测试框架Unittest解决测试结果可视化问题

本文介绍了如何利用原生测试框架解决测试结果可视化问题,重点探讨了测试报告生成体系架构及其实现。文章首先通过流程图展示了核心组件的交互流程,并对比了文本报告和HTML报告的特性。接着,详细说明了文本报告和HTML报告的生成方法,包括核心配置代码和输出控制参数。此外,文章还提供了工程化实践建议,如多报告并行配置和时间戳命名策略,并列举了常见问题及其解决方案。最后,给出了完整的代码示例,展示了如何生成文本和HTML报告。通过这些方法,开发者可以更高效地生成和查看测试结果,提升测试效率。

2025-05-11 23:48:21 550

原创 14. 原生测试框架Unittest的skip、skipIf、skipUnless的使用

Unittest框架提供了skip、skipIf和skipUnless三个装饰器,用于控制测试用例的跳过机制。@skip无条件跳过测试,适用于维护中或未完成的用例;@skipIf在条件为True时跳过,常用于环境依赖检查;@skipUnless在条件为False时跳过,适合平台特性验证。这些装饰器可以在类级别或方法级别使用,且支持多层条件控制,优先级从类到方法递减。最佳实践建议使用条件跳过而非手动跳过,并优化跳过报告输出。此外,动态跳过机制和跨模块条件复用进一步增强了测试灵活性。通过这些装饰器,开发者可以更

2025-05-11 14:23:44 1061

原创 13.原生测试框架Unittest解决用例组织问题 与测试套件的使用

本文详细介绍了如何使用Python的原生测试框架Unittest来组织和管理测试用例,并探讨了测试套件的使用。文章首先解析了Unittest的核心组件,包括TestLoader、TestSuite、TextTestRunner和TestCase,并提供了相应的代码实现。接着,文章深入探讨了测试发现机制,包括路径配置和测试加载流程,并解释了discover方法的参数。此外,文章还介绍了测试执行控制体系,包括运行器配置参数和测试执行流程。最后,文章提出了测试组织结构的优化策略,并给出了工程化实践建议,如目录结构

2025-05-09 17:14:23 673

原创 课外活动:简单了解原生测试框架Unittest前置后置的逻辑

Unittest是Python中常用的测试框架,其执行顺序和前置后置逻辑对于编写有效的测试用例至关重要。测试框架的执行顺序通常为:首先调用setUpClass()进行类级别的初始化,然后依次为每个测试方法调用setUp()、执行测试方法、调用tearDown(),最后在所有测试方法执行完毕后调用tearDownClass()进行类级别的清理。setUpClass()和tearDownClass()分别在测试类初始化和结束时执行一次,适用于全局配置加载和资源释放;而setUp()和tearDown()在每个测

2025-05-08 17:49:08 775

原创 12. 原生测试框架Unittest的后置处理方法的使用

原生测试框架Unittest的后置处理方法的使用

2025-05-08 15:53:29 796

原创 11. 原生测试框架Unittest 解决重复性前置条件的问题

原生测试框架Unittest 解决重复性前置条件的问题

2025-05-08 11:50:09 772

原创 9. 原生测试框架参数化的第二种方法:Unittest内置参数化文本管理器subtest

原生测试框架参数化的第二种方法:Unittest内置subtest## 代码解析与subtest应用### 1. 测试框架基础结构

2025-04-30 13:31:04 1030

原创 10. 你需了解的原生测试框架Unittest断言的使用

2. 语法结构对比维度原生assertunittest断言方法语法形式Python基础关键字TestCase类方法错误信息需手动拼接描述自动生成差异对比失败行为抛出基类AssertionError触发框架专用失败处理机制报告展示显示自定义消息展示期望值vs实际值的对比3. 执行流程差异#mermaid-svg-Etif6nHSvDeqWW6l {font-family:"trebuchet ms",verdana,arial,sans-ser

2025-04-30 13:18:41 888

原创 大厂经验:第三方包Paramunittest参数化 VS Unittest内置参数化文本管理器subtest

小型项目/快速验证可提供更直观的测试报告。企业级应用subTest+数据驱动的模式在可维护性和稳定性上表现更优,是大厂主流选择。

2025-04-30 08:04:17 426

原创 7. 页面对象开发的第二种实现方式:页面实例化

核心机制:设计亮点:功能实现:继承Page基类的基础能力定义具体页面的元素定位器封装页面访问和登录操作通过属性访问元素(如self.username)3. MainPage主界面模块扩展机制:通过合并父类定位器添加订单操作相关元素定位实现缺陷搜索业务流程继承复用登录功能4. TestMain测试执行类测试流程:创建页面实例时自动初始化浏览器链式调用页面操作方法通过页面属性访问元素进行断言显式管理浏览器生命周期类关系图示#merma

2025-04-29 18:13:46 1023

原创 8. 原生测试框架Unittest参数化的第一种方法:第三方包Paramunittest参数化

关键机制:装饰器实现测试参数化每组参数包含:用户名密码预期断言信息测试结果输出文本多重继承:同时继承和页面对象类Oder。

2025-04-29 17:44:28 731

原创 大厂经验:Python Page Object 模式两种写法对比:页面继承 vs 页面实例化

简单项目:可用po.py快速实现,但需警惕继承链过深。企业级项目:优先选择po_2.py的动态管理方案,或结合工厂模式。大厂趋势:动态配置 + 高度解耦是主流,部分团队会引入行为驱动开发(BDD)框架进一步抽象。

2025-04-28 17:43:18 413

原创 课外知识:你需要了解的Python类对象里面的__getattr__方法

__getattr__是Python类对象中的一个特殊方法,用于在访问不存在属性时触发。其核心特性包括动态属性处理、按需触发和灵活扩展,常用于实现动态属性计算、惰性加载、属性代理和API接口包装等功能。例如,可以通过__getattr__动态生成计算方法或延迟加载资源。使用时需注意避免无限递归,并区分__getattr__与__getattribute__的适用场景。掌握__getattr__可以提升代码的灵活性和性能优化能力,适用于多种复杂对象的封装和动态接口的实现。

2025-04-28 13:30:17 852

原创 6. 页面对象开发的第一种实现方式:页面继承

通过分层设计和模式应用,使代码维护成本降低60%以上 —— 《自动化测试最佳实践》】按钮,获取更多软件测试的晋升认知不迷路!

2025-04-28 11:10:09 963

原创 5. 继承基类实现浏览器_Edge

作用:统一管理浏览器配置参数参数说明:各浏览器驱动路径:默认窗口尺寸*_TIME:等待策略超时阈值HEADLESS:无头模式开关。

2025-04-24 17:29:39 833

原创 课外知识:你需要了解的chrome_options.add_experimental_option()的用法

作用:添加Chrome的实验性配置选项参数name:选项名称(字符串)value:选项值(字典/列表/布尔值等)

2025-04-23 11:34:14 1162

原创 课外知识:你需要了解的chrome_options.add_argument()的用法

【代码】课外知识:你需要了解的chrome_options.add_argument()的用法。

2025-04-23 11:32:35 887

原创 4. 继承基类实现浏览器_Chrome

驱动路径配置# 运行参数配置作用:统一管理浏览器配置参数参数说明:各浏览器驱动文件路径:默认窗口分辨率*_TIME:不同类型等待超时阈值HEADLESS:无头模式开关类型安全使用Type和Union进行类型注解运行时动态类型校验严格限制参数类型配置集中化统一管理驱动路径参数分类存储常量与实现分离扩展性设计通过继承实现浏览器差异化预留标准扩展接口支持新浏览器类型扩展防御式编程前置参数校验异常精准捕获错误及时终止。

2025-04-23 10:26:44 983

原创 课外知识:isinstance()与issubclass()的区别

是检查基因继承关系” —— 《Python之禅》注解。】按钮,获取更多软件测试的晋升认知不迷路!issubclass: 类继承关系校验。isinstance: 实例类型校验。使用isinstance。使用issubclass。是给你的代码做CT扫描,

2025-04-22 19:26:13 774

原创 3. 浏览器对象Browser基类的开发

浏览器驱动路径# 窗口与超时配置WINDOWS_SIZE = (1024, 768) # 默认窗口尺寸IMP_TIME = 30 # 隐式等待时间(秒)PAGE_LOAD_TIME = 20 # 页面加载超时SCRIPT_TIME_OUT = 20 # 脚本执行超时HEADLESS = True # 无头模式开关作用:集中管理浏览器配置参数功能定义不同浏览器的驱动路径设置统一的浏览器窗口参数配置各种超时阈值控制无头模式开关@property。

2025-04-22 07:45:50 1193

《数据结构:C++》

出版:2007-3-1,豆瓣:7.1分,书名:《数据结构:C++》[中]严蔚敏 吴伟民。 严蔚敏,清华大学计算机系教授,长期从事数据结构教学和教材建设,和吴伟民合作编著的《数据结构》曾获“第二届普通高等学校优秀教材全国特等奖”和“1996年度国家科学技术进步奖三等奖”。

2018-12-10

《数据结构》

出版:2013-9,豆瓣:9.4分,书名:《数据结构》,作者[中]邓俊辉。 邓俊辉,清华大学计算机系副教授。1993年、1997年分别于清华大学计算机系获工学学士和工学博士学位。主要研究方向为科学计算可视化、计算几何及计算机图形学。长期承担清华大学计算机本科生专业基础课程“数据结构”和研究生基础理论课“计算几何”的教学工作,编著的《数据结构与算法(Java描述)》入选“北京市高等教育精品教材”,参与编著的《数据结构(用面向对象方法与C++语言描述)》入选“国家级高等教育精品教材”,曾获清华大学“青年教师教学优秀奖”、清华大学“教书育人奖”、清华大学“教学成果奖”二等奖、清华大学“教学成果奖”一等奖、中国高校科学技术奖二等奖、宝钢教育基金“宝钢教育奖”。

2018-12-06

《改变未来的九大算法》

出版:2013-6 书名:《改变未来的九大算法》 作者:[美] 约翰.麦考密克。约翰·麦考密克,JohnMacCormick,计算机科学的领头人和导师。 获得牛津大学博士学位,曾经在惠普和微软从事研究工作。现在在迪金森学院担任计算机学科的教授。并且是多项专利的所有者。

2018-12-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除