- 博客(78)
- 收藏
- 关注
原创 【pytest高阶】-2- 内置hook插件扩展机制和定制开发
pytest是 “派对主办方”,提供基础流程~hook是 “派对环节接口”,每个环节开放给插件扩展~插件是 “派对嘉宾”,用@hookimpl实现 hook,在对应环节 “表演节目”~想玩转 pytest 源码或写插件?hook 是桥梁,插件是魔法,pytest 靠它们无限扩展!🍭二、用 pytest hook 自动生成测试用例 🧪✨self.path = path # 保存测试数据文件路径,用于调试:继承自Item的自定义测试项类__init__:初始化函数,创建对象时自动调用name。
2025-07-30 15:26:16
586
原创 【pytest高阶】-1- 源码的走读方法及插件hook
Dog# 用 @hookimpl 标记:这是插件对 say_after 钩子的实现!@hookimplprint(f'我是插件1,我收到了软件的参数 {arg1}, {arg2}')@hookimplprint(f'我是插件2,我收到了软件的参数 {arg1}, {arg2}')插件的作用:每个插件里的say_after函数,必须和钩子函数(Dog里的say_after)参数一致(都有arg1, arg2),这样插件管理器才能识别~
2025-07-28 17:29:30
566
原创 【python高阶】-2- 线程和进程的并发
队列:线程安全的传送带,生产者放、消费者取,不用自己加锁~线程池:小管家帮你管理线程,控制同时运行的线程数,避免资源浪费~:消费者吃完要告诉传送带,否则传送带会一直等,可能超时~二、线程并发 - 锁lock:魔法小夹子🔐 ,谁拿到它,谁才能操作 “文件”(共享资源)。task_a线程:勤劳的 “读取小助手”📖 ,负责读取文件,会先拿到锁。task_b线程:勇敢的 “删除小助手”🗑️ ,想删除文件,但得等读取小助手把锁释放。锁的作用:像魔法小夹子,保护共享资源,让多个线程有序操作,避免数据混乱。
2025-07-28 14:44:06
845
原创 【python高阶】-1- python工程和线程并发
将四个命令合并在一起time.sleep(1) # 模拟任务耗时return "任务1结果"return "任务2结果"return "任务3结果"方式可爱比喻优点缺点变量共享小盒子📦简单直接容易打架(需加锁)队列传送带📮线程安全、解耦省心要维护队列结构锁魔法令牌🔒精准保护共享资源用不好会 “死锁”(慎用)
2025-07-28 13:28:28
583
原创 【web自动化】-7- 关键字驱动测试
作用:把用户常用操作(点击、输入等)写成简单方法,测试用例直接调用,不用重复写 Selenium 代码。常见方法示例kdt.py。
2025-07-23 09:30:03
970
原创 【web 自动化】-6- 数据驱动DDT
场景POM 实现KDT 实现页面元素 ID 变更修改对应 Page 类中的定位器无需修改代码,调整 Excel 中的定位参数新增测试用例编写新的测试函数,调用 Page 方法在 Excel 中新增测试步骤行跨项目复用复制 Page 类到新项目导出关键字库和 Excel 模板到新项目非技术人员参与测试需要培训 Python只需熟悉 Excel 表格填写通过以上对比可以看出,KDT 更适合需求快速变化、需多方协作的场景,而POM 更适合结构稳定、技术主导的项目。
2025-07-21 17:31:09
1058
原创 【web自动化】-5- fixture集中管理和项目重构
完成第一次登录之后进行清除页面缓存# 清除缓存的夹具,可以结合第一次登录成功之后的夹具一起结合使用在投标用例中使用清除缓存的 fixture出现的问题:可以正常流程去登录,但是定位点击马上投标的元素超时元素找不到问题出现原因:登录成功之后,界面没有立马出现马上投标元素# 投标用例执行print(msg)assert msg == "投标成功!# 投标用例执行print(msg)assert msg == "投标成功!# 投标用例执行print(msg)
2025-07-21 15:30:17
665
原创 【性能测试】-1- 性能测试基础
功能测试、自动化测试的结果: 发现预期结果 与 实际结果 不一致的地方 ===bug。 bug 的修复,就交给开发人员。性能测试不要害怕性能调优,能力欠缺,我去分析了,分析的浅一点,分析次数多了,经验丰富了,分析的深度就会越深,次数多了,我就成了专家。jmeter 是做不了前端性能测试的。 前端 有渲染时间的: 渲染依赖宿主: …… 前端的性能差异性非常大,做性能测试,效益非常低,技术门槛又很高。所以,当下,中 小微企业,不大适合做前端性能测试。后端性能测试就是用 多个人 同时请求。侠义并发测试:同一个时
2025-07-21 09:44:27
787
原创 【web自动化】-4-引入pytest测试框架全面封装
先接上集的POM设计方法,由于封装的重写定位元素的方法,以及触发显示等待在所有页面类中都可以使用,但所有页面类都需要重新复制优化后的封装代码。为了让代码清晰简洁减少重复,使用的方式让每一个子页面类获取父页面类的方法和属性。一般在POM模式中当作所有页面的父类(元类)BasePage一般属于抽象类的范畴,不建议直接实例化其实例对象,不能代表任何的实例对象。把子类页面中共同需要使用的属性或者方法统一封装到父类中:类属性,类方法,实例属性,实例方法。
2025-07-18 16:22:17
980
原创 JavaSE-8-多态
向上转型是指将一个子类对象转换为父类类型的过程。在这个过程中,子类对象被当作父类对象来使用,它可以调用父类中定义的方法和属性,但对于子类特有的方法和属性,如果没有在父类中声明,就不能通过转型后的父类引用直接访问。
2025-07-14 21:44:54
869
原创 秋招小白学数据结构-1-数据结构前置知识
T>是类型参数(也叫类型变量),代表 “任意类型”,定义类时是占位符,用的时候(比如)再确定具体类型(Integer作用:让MyArray类能适配不同类型(IntegerString等),不用为每种类型写一套类。定义了一个名为Solution的类,类中包含一个公共的(public)、返回值为int类型的方法,该方法接收一个String类型的参数s,用于处理和统计字符串中的字符段信息。泛型边界(要求类型T必须实现Comparable接口Comparable。
2025-07-11 22:34:11
963
原创 [秋招小白学Git企业级开发]-1-认识Git
1.创建一个git仓库:1.创建一个git仓库:创建一个文件夹gitcode,git init创建仓库,la查看隐藏文件,tree是需要install的 查看.git/文件结构la不是 Linux 系统的标准命令,而是某些用户自定义的别名(通常是ls -a的缩写,用于显示包括隐藏文件在内的所有文件):在终端中执行以下命令,将la定义为ls -a是一个独立的软件包,CentOS 默认未安装。:使用yum切换root态:su2.配置仓库:配置:git config user.xx"xxx"
2025-07-09 20:20:59
686
1
原创 【pytest 基础三讲】-3- Yaml文件和Parametrize数据驱动
应用场景:web 自动化常用 excel,接口自动化常用 yaml(扩展名:.yml 或.yaml ),能和 json 字符串完美转换。
2025-06-08 10:51:39
782
原创 【pytest 基础三讲】-1- 初识pytest
ini 解释:在 配置文件中,使用 关键字来定义自定义的标记。这里定义了 (代表冒烟用例)、(代表用户模块相关用例)、(代表订单模块相关用例) 。这些标记后续可用于给测试用例分类打标签,方便在运行测试时筛选执行特定类别的: 使用 装饰器来给测试函数打标记。 函数被打上了 标记,表示它属于用户模块相关的测试用例 ; 函数被打上了 标记,表示它属于订单模块相关的测试用例。 这里测试函数定义中出现的 参数,如果是在测试类中的方法, 是合理的,表示类实例本身;如果是普通测试函数,不应该有
2025-05-15 16:27:08
1062
原创 【pytest 基础三讲】-2- allure报告
装饰器用于定义测试用例所属的史诗级(项目级)别的标题,这里指定了项目名称为 “金融项目接口自动化报告” ,在 Allure 报告中会以项目维度进行展示,方便从宏观层面归类测试用例。装饰器用来标识测试用例所属的功能模块,这里表明这些测试用例属于 “用户管理模块” ,可以将同一功能模块下的测试用例聚合展示在 Allure 报告中。方法上使用,意味着该测试用例在报告中展示的标题为 “验证登陆失败” ,可使报告中的用例标题更清晰易读。装饰器用于指定测试用例在 Allure 报告中显示的标题。
2025-05-15 16:26:56
1190
原创 Python自动化-python基础(上)
通过继承内置的Exception类或其子类来创建自定义异常,用于特定业务逻辑错误处理,能提供更清晰错误信息。try:raise MyCustomError("这是自定义异常")self用于实例方法,代表类的实例对象,主要用来访问和修改实例的属性与方法。cls用于类方法,代表类本身,主要用来访问和修改类的属性,以及创建类的新实例。
2025-05-08 16:09:04
876
原创 JavaSE-7 继承
super关键字主要用于在子类中访问父类的成员变量、调用父类的方法和构造方法。在访问父类成员变量和方法时,super可以帮助我们区分子类和父类中同名的成员。在调用父类构造方法时,super调用必须放在子类构造方法的第一行,以确保父类对象先被正确初始化。protected权限限定符提供了一种灵活的访问控制机制,它允许在同一个包内的类以及不同包的子类访问类的成员,同时限制了其他类的访问,有助于封装和信息隐藏,提高代码的安全性和可维护性。顶层类使用public。
2025-03-11 11:07:10
678
原创 JavaSE-6 类和对象(二)
实例内部类的特性:实例内部类是依赖于外部类的实例而存在的,也就是说,必须先创建外部类的对象,才能创建实例内部类的对象。而静态成员变量属于类本身,在类加载时就会被分配内存空间,不依赖于任何对象。逻辑冲突:如果允许实例内部类有普通的静态成员变量,就会出现逻辑上的冲突。因为静态成员变量是类级别的,应该独立于任何实例,但实例内部类又依赖于外部类的实例,这两者之间的依赖关系不匹配。
2025-03-09 15:40:56
776
原创 实习内容整理
测试环境搭建:软件运行的实际生产环境尽可能相似的环境。这个环境包含了硬件、软件、网络等各种必要的元素.测试环境维护:是在测试环境搭建完成后,对其进行持续的监控、管理和优化,确保测试环境始终处于稳定、可靠的状态,满足软件测试的需求。同时,根据软件的更新和测试需求的变化,及时对测试环境进行调整和升级。评估测试结果:对测试执行过程中收集到的数据进行分析和评估,包括缺陷的数量、分布情况、严重程度等,以评估软件的质量状况。撰写测试报告:根据测试评估的结果,撰写详细的测试报告。
2025-03-05 11:59:55
819
原创 JavaSE-4方法 递归 数组
1)修饰符:public static2)形参返回值类型和实参返回值类型一致3)方法名字:小驼峰4)参数列表:如果方法没有参数就不写,需要指定参数类型,多个参数之间用逗号隔开。5)方法必须写在类当中6)方法不能嵌套定义:不能在一个方法的内部再定义另一个完整的方法7)没有方法声明一说。
2025-03-03 18:22:59
486
原创 SQL语言(一)
CREATE TABLE <表名>(<列名> <数据类型>[ <列级完整性约束条件> ][,<列名> <数据类型>[ <列级完整性约束条件>] ][,<表级完整性约束条件> ] );如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上[例1] 建立“学生”表Student。学号是主码,姓名取值唯一。Student/* 列级完整性约束条件,Sno是主码*/Sname CHAR(20) UNIQUE, /* Sname取唯一值*/
2025-02-28 14:50:50
601
原创 接口测试-接口类型/接口文档
Web 接口是不同软件系统之间进行通信和数据交互的通道,常见的 Web 接口类型有以下几种:为了通信 为了解耦 (为了数据传输 为了集成 为了特定服务)接口之间协同工作是一个复杂但有序的过程,不同类型的接口协同方式会有所不同,但通常都涉及确定交互流程、数据传递与转换等关键步骤,以下是接口协同工作的一般方式:接口文档信息测试过程
2025-02-26 18:24:01
1104
原创 接口测试-请求和响应
RMI 是Java 特有的一种用于实现远程过程调用的机制,允许运行在一个 Java 虚拟机(JVM)中的对象调用运行在另一个 JVM 中的对象的方法,就像调用本地对象的方法一样自然和透明。IIOP 是一种基于 TCP/IP 的协议,它是对象管理组织(OMG)定义的用于在不同的对象请求代理(ORB,Object Request Broker)之间进行通信的标准协议。ORB 是分布式对象系统中的核心组件,负责对象的定位、激活和方法调用等操作。
2025-02-26 15:43:17
1077
原创 接口测试-计算机网络基础扫盲
定义:端口号是一个 16 位的整数,取值范围从 0 到 65535。它是传输层协议(如 TCP 和 UDP)的一部分,用于标识一台主机上进行通信的不同应用程序或服务。作用:在网络通信中,IP 地址用于标识网络中的不同设备,而端口号则用于标识设备上的不同应用程序或服务。通过 IP 地址和端口号的组合,数据包可以准确地从源主机的特定应用程序发送到目标主机的特定应用程序。
2025-02-25 14:15:57
791
原创 Java EE初阶-计算机导论
系统调用是操作系统内核提供给应用程序的一组特殊接口,应用程序通过调用这些接口来请求操作系统内核完成一些特权操作,因为用户程序通常运行在用户态,没有足够的权限直接访问系统资源或执行某些敏感操作,所以需要通过系统调用切换到内核态,让具有更高权限的操作系统内核来完成相应任务。
2025-02-21 15:42:58
819
原创 接口测试-Protobuf相关
定义:对于像 JSON、XML 等数据格式,schema 用于定义数据的结构、类型和约束规则,确保数据的一致性和有效性。它描述了数据应该遵循的格式和规则,就像是数据的 “蓝图”。作用数据验证:在处理数据时,可以使用 schema 来验证数据是否符合预期的结构和规则。例如,一个 JSON schema 可以规定某个字段必须是字符串类型,且长度在一定范围内,当接收到的数据不符合这些规则时,就可以识别出数据存在问题。数据交互。
2025-02-20 18:00:19
744
原创 接口测试-API测试中常用的协议(下)
gRPC:使用 Protocol Buffers 定义服务接口和消息类型,具有严格的类型系统。服务接口定义明确,包括方法名、输入参数和返回值类型,在编译阶段就能进行类型检查,有助于提高代码的可靠性和可维护性。例如::主要基于资源和 URI 进行设计,通过 HTTP 方法(如 GET、POST、PUT、DELETE)对资源进行操作。接口定义相对灵活,但缺乏严格的类型约束,更多依赖文档来规范接口使用。例如,一个获取用户信息的 RESTful API 可能是。
2025-02-20 17:39:14
941
原创 接口测试-API测试中常用的协议(中)
SOAP(Simple Object Access Protocol)即简单对象访问协议,是一种基于 XML 的用于在网络中的协议,常用于 Web 服务之间的通信。
2025-02-20 15:51:26
1149
原创 接口测试-API测试中常用的协议(上)
AMQP:是一个开放的、应用层的消息通信协议,它详细定义了客户端与消息中间件之间的通信规则和数据格式等,具有平台无关性,不仅限于 Java 平台,可以被多种编程语言实现和使用。JMS:是Java 平台上的一套消息服务的规范和 API,主要是为 Java 开发者提供在 Java 应用中进行消息传递的功能,是基于 Java 语言的。
2025-02-19 12:21:52
713
原创 Charles 工具使用-弱网-抓包
2、注册:首次打开的Charles需要注册——在线破解链接:https://www.zzzmode.com/mytools/charles/——在链接中输入Registered Name,点击生成,即可生成激活码license key。
2025-02-17 17:58:38
3393
原创 简单认识一下-Redis
原理:根据具体的业务场景和需求,使用编程语言(如 Python、Java 等)编写自定义的性能测试脚本。脚本可以模拟不同的请求模式、数据量和并发情况,对 Redis 进行更有针对性的测试。Python 示例# 连接 Redis# 定义测试函数# 模拟并发测试t.start()t.join()结果分析:通过记录脚本的执行时间,可以计算出在特定并发情况下 Redis 处理请求的速度。可以多次运行脚本,取平均值来得到更准确的结果。
2025-02-17 14:59:18
745
原创 JAVA EE初阶 - 预备知识(四)
定义:JavaBean 本质上是一个公共的 Java 类,它将多个数据封装在一起,作为一个独立的对象存在,方便数据的传递和管理。规范要求类必须是公共的使用public修饰符,这样其他类才能访问该 JavaBean。例如:// 类的具体内容必须有一个无参构造方法:这使得 Java 开发工具(如 IDE)或框架能够轻松地实例化这个类。即使没有显式定义构造方法,Java 编译器也会默认提供一个无参构造方法。不过,当定义了有参构造方法时,就需要手动添加无参构造方法。示例如下:// 无参构造方法的具体逻辑。
2025-02-17 14:14:58
809
原创 JAVA EE初阶 - 预备知识(三)
定义:中间件是连接两个或多个软件组件或应用程序的软件层,它屏蔽了底层操作系统和网络的复杂性,为开发者提供了统一的编程接口和开发环境,使得不同的应用程序可以方便地进行通信和协作。作用简化开发:开发者无需关注底层的通信细节和系统差异,只需使用中间件提供的接口进行开发,从而降低了开发难度和成本,提高了开发效率。提高可移植性:中间件可以在不同的操作系统和硬件平台上运行,使得基于中间件开发的应用程序具有更好的可移植性。增强系统的灵活性和扩展性。
2025-02-17 11:25:46
995
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人